Ошибка «Session closed» при попытке получить блоб из БД с помощью getBinaryStream () - PullRequest
1 голос
/ 02 декабря 2008

Я использую Hibernate 3.1 и Oracle 10 DB. BLOB-объект определяется как @Lob @Basic @Column в объекте Hibernate, который соответствует соответствующей таблице БД. Ошибка -java.sql.SQLException: Closed Connection - кажется, появляется время от времени, а не при каждой попытке получить большой двоичный объект из БД. Это похоже на проблему извлечения в спящем режиме, поэтому я подумал о том, чтобы указать тип используемой выборки - EAGER кажется правильным в этом случае, но не могу найти способ указать тип выборки для типа объекта @Column (существует способ сделать это для коллекций / отношений "один ко многим" и т. д.)

Буду признателен за вашу помощь, спасибо.

Ответы [ 4 ]

1 голос
/ 02 декабря 2008

Это против базы данных Oracle?

Мне пришлось прибегнуть к пользовательским типам данных в Hibernate, чтобы заставить это работать, но это использовало Hibernate 3.0 против Oracle 9 db.

См. http://www.hibernate.org/56.html для подробного обсуждения этой темы (включая типы данных пользователя).

0 голосов
/ 09 июня 2011

Может помочь установка системного свойства hibernate.jdbc.use_streams_for_binary = true.

0 голосов
/ 17 сентября 2009

Если вы хотите указать стратегию извлечения, используйте:

@Basic(fetch = FetchType.LAZY)

для вашего участника.

0 голосов
/ 10 декабря 2008

Недавно я внедрил систему гибернации поверх базы данных Oracle 11g, в которой используются капли. В этом нет никакой настоящей магии.

Стандартная причина ошибок гибернации 'Session closed' заключается в том (чтобы не указывать на очевидное), что сеанс, к которому присоединяется ваша сущность, действительно закрыт.

Определите, где именно и когда открывается и закрывается сессия. Это может быть не совсем очевидно, если вы используете AOP или пружину для управления этим для вас.

Кроме того, я уверен, что вам нужна открытая транзакция или, по крайней мере, соединение БД с отключенной автоматической фиксацией.

Gareth

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...