如何用JPQL获取blob字段的长度?

时间:2011-10-09 09:14:37

标签: java jpa jpql

我有一个带有blob字段的JPA实体。我想编写一个JPQL查询来获取实体blob的长度(我不想将blob加载到内存中)。

例如,在Oracle中,我可以使用以下SQL查询:

SELECT length(blob_field) FROM my_table WHERE id = ?

如何使用JPQL获取blob的长度?

2 个答案:

答案 0 :(得分:0)

你做不到。 JPQL长度函数计算字符串中的字符数,blob中的字节数不符合该定义。

但是,您可以将长度用于保存为CLOB的属性(char / Characters数组或String作为Java类型)。

//can use length function for CLOBs:
@Lob char[] a;
@Lob Character b;
@Lob String c;

//can not use length function for BLOBs:
@Lob byte[] d;
@Lob Byte e;
@Lob Serializable f;

答案 1 :(得分:0)

如果使用EclipseLink,您可以使用JPQL中的“FUNC”函数来定义数据库函数。

请参阅, http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/Support_for_Native_Database_Functions