У меня очень странная проблема, hibernate делает запрос UPDATE без моего ведома.Hibernate коллекция ленивая загрузка странное поведение
Я использую Spring + Hibernate. 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:
@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;
}
я получаю экземпляр в моем транзакционном DAO, и после использования этого метода
A a = ... get from DAO
List<B> listB = a.getList();
for (B o : listB){
......
}
Когда Java пытается получить итератор (LISTB .iterator()) hibernate сделать этот запрос:
Hibernate: update b set bId=null where bId=?
Похоже, что я нашел [проблему] (https://hibernate.atlassian.net/browse/HHH-7971). Я вернулся к версии 4.1.7.Final и все работает. – Vitaliy
Положите ясный ответ на решение, и, возможно, кому-то с той же проблемой может быть полезно. :) – Desorder