我正在使用Hibernate 3.1和Oracle 10 DB。 blob在Hibernate实体中定义为@Lob @Basic @Column,它对应于相关的DB表。 错误-java.sql.SQLException:Closed Connection-似乎一次出现,而不是每次尝试从DB获取blob。 这看起来像是一个hibernate提取问题,所以我想到指定要使用的fetch类型 - 在这种情况下EAGER似乎正确 - 但是没有找到任何方法来指定@Column类型的对象的提取类型(有一个为收集/“一对多”关系等方式做到这一点的方式
非常感谢您的帮助,谢谢。
答案 0 :(得分:1)
这是针对Oracle数据库吗?
我不得不求助于Hibernate中的用户数据类型来实现这一点,但这是针对Oracle 9 db使用Hibernate 3.0。
有关此主题的长时间讨论(包括用户数据类型),请参阅http://www.hibernate.org/56.html。
答案 1 :(得分:0)
我最近在使用blob的Oracle 11g数据库之上实现了一个hibernate系统。没有任何真正的魔力。
“会话已关闭”hibernate错误的标准原因是(并未明确指出)您的实体附加到的会话确实已关闭。
明确确定会话开启和关闭的地点和时间。如果您使用AOP或弹簧来为您管理,这可能并不完全明显。
此外,我非常确定您需要一个打开的事务,或者至少关闭了自动提交的数据库连接。
加雷
答案 2 :(得分:0)
如果要指定提取策略,请使用:
@Basic(fetch = FetchType.LAZY)
为您的会员。
答案 3 :(得分:0)
设置系统属性hibernate.jdbc.use_streams_for_binary = true可能会有所帮助。