![](/img/trans.png)
[英]Is there a way to selectively load records into a lazy collection in hibernate?
[英]Hibernate collection lazy load strange behavior
我有一个很奇怪的问题,hibernate 没有任何原因地进行 UPDATE 查询。
我使用 Spring + Hibernate。 休眠配置:
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.enable_lazy_load_no_trans">true</prop>
<prop key="hibernate.connection.autocommit">false</prop>
</props>
</property>
我的实体:
@Entity
@Table(name = "a")
public class A {
@Id
@GeneratedValue
private int id;
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "bId")
private List<B> list;
}
-----------------------
@Entity
@Table(name = "b")
public class B{
@GeneratedValue
@Id
private int id;
@Column
private int test;
}
我在 Transactional DAO 中获得了 A 的实例,并在使用此方法后
A a = ... get from DAO
List<B> listB = a.getList();
for (B o : listB){
......
}
当 Java 尝试获取迭代器 (listB.iterator()) 休眠时,请发出以下请求:
Hibernate: update b set bId=null where bId=?
看来我发现了问题。 我回到了 4.1.7.Final 版本,一切正常。
这个问题也在 5.0.0、4.3.5、4.2.12 版本中得到修复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.