2013-12-01 4 views
1

У меня очень странная проблема, 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=? 
+0

Похоже, что я нашел [проблему] (https://hibernate.atlassian.net/browse/HHH-7971). Я вернулся к версии 4.1.7.Final и все работает. – Vitaliy

+0

Положите ясный ответ на решение, и, возможно, кому-то с той же проблемой может быть полезно. :) – Desorder

ответ

0

Кажется, я нашел problem. Я вернулся к версии 4.1.7. Final и все работает.

Это проблема также исправлена ​​в версиях 5.0.0, 4.3.5, 4.2.12.

Смежные вопросы