Hibernate: cannot simultaneously fetch multiple bags异常

异常产生的原因:

1、hibernate实体对象有多个一对多关系或者多对一关系;
2、我们保存多的一方的实体对象使用的是List集合;
3、我们使用了fetch=FetchType.EAGER抓取策略;
满足以上三个条件就会产生cannot simultaneously fetch multiple bags异常。

异常产生的内部原因:

当(fetch = FetchType.EAGER)多余一个时,持久框架抓取一方的对象时,同时又将多方的对象加载进容器中,多方又可能关联其它对象,Hibernate实现的JPA,默认最高抓取深度含本身级为四级(它有个属性配置是0-3),若多方(第二级)存在重复值,则第三级中抓取的值就无法映射,就会出现 multiple bags。

解决方法:

1、使用fetch=FetchType.LAZY。(JPA)
2、将List集合换为Set集合。(JPA)
3、在对应的属性上添加@IndexColumn。(Hibernate)

你可能感兴趣的:(Hibernate: cannot simultaneously fetch multiple bags异常)