美文网首页
Hibernate: cannot simultaneously

Hibernate: cannot simultaneously

作者: 游牧族人 | 来源:发表于2018-05-26 09:12 被阅读16次
    异常产生的原因:

    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

          本文链接:https://www.haomeiwen.com/subject/iswpjftx.html