问题是什么时候出现的呢?
    当一个实体对象中包含多于一个non-lazy获取策略时,比如@OneToMany,@ManyToMany或者@ElementCollection时,获取策略为(fetch = FetchType.EAGER)

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

解决方法:
    1、将(fetch = FetchType.EAGER)改为(fetch = FetchType.LAZY)
    2、将List修改成Set集合,即推荐@ManyToMany或@OneToMany的Many方此时用Set容器来存放,而不用List集合。
    3、改变FetchMode为@Fetch(FetchMode.SUBSELECT),即发送另外一条select语句抓取前面查询到的所有实体对象的关联实体。
    4、在对应的属性上添加@IndexColumn,该注解允许你指明存放索引值的字段,目的跟Set容器不允许重复元素的道理一样。

推荐的处理办法:方法2;
    方法3和方法4是Hibernate特有的,非JPA标准;
    如果可以用方法1,那就不会出现这个问题。

最新文章

  1. HTML 5 音频(audio)
  2. ★Java多线程编程总结 系列 转
  3. Attention and Augmented Recurrent Neural Networks
  4. Html5 Video 实现方案
  5. jQuery限制文本框只能输入正整数
  6. asp.net MVC 学习笔记
  7. 并行开发学习随笔1——plinq并行
  8. 使用JQuery插件,排序Gridview的某个字段
  9. POJ3690 Constellations 【KMP】
  10. JAVA课程设计-----加减法测试博客
  11. css基础-选择器
  12. 一起来学spring Cloud | 第一章:spring Cloud 与Spring Boot
  13. 自学Python4.2-装饰器
  14. ArcGIS 常见错误
  15. 【Crash】C++程序崩溃排查方法
  16. 用 Windows Live Writer 写blog,This is Test……..
  17. Java的简单书写格式
  18. JavaWeb基础—VerifyCode源码
  19. getopt例子
  20. DB2触发器简单例子

热门文章

  1. JavaScript 闭包系列二(匿名函数及函数的闭包)
  2. Cheap Hollister Clothing
  3. mysql配置文件编写
  4. 自定义jsp标签
  5. iOS保存cookie的方法
  6. entity framework 新手入门篇(1)-建立模型
  7. box-shadow中的理解(bootstrap)
  8. 30+有用的CSS代码片段
  9. android 判断当前界面是否是桌面
  10. 对一个目录的文件从cp936转换成utf-8