Hibernate集合延迟加载奇怪的行为

时间:2013-12-01 01:01:38

标签: java spring hibernate jpa

我有一个非常奇怪的问题,hibernate在我不知情的情况下进行UPDATE查询。

我使用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
@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尝试获取iterator(listB.iterator())时,hibernate发出此请求:

Hibernate: update b set bId=null where bId=?

1 个答案:

答案 0 :(得分:0)

我似乎找到了problem。我回到了版本4.1.7.Final,一切正常。

它的问题也在5.0.0,4.3.5,4.2.12版本中得到修复。