2012-03-16 88 views
1

我想顯示從數據庫中讀取的文件名列表及其大小,但是如果我讀取blob的值,則查詢速度非常慢。如何在不閱讀它的情況下計算blob的大小?如何在不讀取BLOB內容的情況下獲取BLOB的大小?

我正在使用EclipseLink。

+0

你可以做什麼米克以下建議,但恕我直言,我考慮將blob大小存儲在單獨的字段中是一個更好的主意。 – 2012-03-17 23:49:58

回答

1

JPQL中沒有這樣的設施。另外它如何完成本地查詢可能取決於數據庫。至少在MySQL和Oracle以下工作:

SELECT LENGTH(blob_field) FROM table_name; 

如果使用JPQL,LENGTH功能僅限於字符類型,因此它並不適用於BLOB。當然,可以使用持久性提供者擴展來使其工作。

+0

+1。原生查詢在JPA中是不可避免的。 – 2012-03-17 19:17:05

0

JPQL支持長度,所以這也應該在JPQL工作,

Select LENGTH(o.blobField) from MyObject o 

否則你總是可以在JPQL使用FUNC,

Select FUNC('LENGTH', o.blobField) from MyObject o