Как получить размер BLOB без чтения содержимого BLOB? - PullRequest
2 голосов
/ 17 марта 2012

Я хочу показать список имен файлов, считанных из базы данных, и их размеры, но если я прочитал значение большого двоичного объекта, запрос будет очень медленным.Как я могу рассчитать размер BLOB-объекта, не читая его?

Я использую EclipseLink.

Ответы [ 2 ]

1 голос
/ 17 марта 2012

В JPQL такой возможности нет. Также, как это делается с помощью собственного запроса, возможно, зависит от базы данных. По крайней мере с MySQL и Oracle следующие работы:

SELECT LENGTH(blob_field) FROM table_name;

Если вы используете JPQL, функция LENGTH ограничена типами символов, поэтому она не применима для BLOB. Конечно, может быть расширение поставщика постоянства, которое заставляет его работать.

0 голосов
/ 19 марта 2012

JPQL поддерживает ДЛИНУ, поэтому это также должно работать в JPQL,

Select LENGTH(o.blobField) from MyObject o

В противном случае вы всегда можете использовать FUNC в JPQL,

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