2010.04.08———cannot simultaneously fetch multiple bags异常
程序员文章站
2022-03-02 15:40:19
...
2010.04.08———cannot simultaneously fetch multiple bags异常
用户登录时,同步实时加载用户的角色对象、权限对象,而往往这些关系都是多对多关系,就单一列内容来看存在重复的值,从而引起multiple bags。我在网上搜索这类结果,几乎都提出一个解决办法——采用延迟加载,即fetch=FetchType.LAZY,这样就束缚了框架的强大功能
问题原因就是,当持久框架抓取一方的对象时,同时加载多方的对象放进容器中,多方又可能与关联其它对象,Hibernate实现的JPA,默认最高抓取深度含本身级为四级(它有个属性配置是0-3),若多方(第二级)存在重复值,则第三级中抓取的值就无法映射,按照这个道理,就应该报出无法同时加载多个包之异常
一对多或多对多的多方数据抓取过来后必须用容器类存,例如Set、List、Map等,主要就在这个容器上
即@ManyToMany或@OneToMany的Many方此时一定用Set容器来存放,而不能用List集合。
Caused by: org.hibernate.HibernateException: cannot simultaneously fetch multiple bags,
用户登录时,同步实时加载用户的角色对象、权限对象,而往往这些关系都是多对多关系,就单一列内容来看存在重复的值,从而引起multiple bags。我在网上搜索这类结果,几乎都提出一个解决办法——采用延迟加载,即fetch=FetchType.LAZY,这样就束缚了框架的强大功能
问题原因就是,当持久框架抓取一方的对象时,同时加载多方的对象放进容器中,多方又可能与关联其它对象,Hibernate实现的JPA,默认最高抓取深度含本身级为四级(它有个属性配置是0-3),若多方(第二级)存在重复值,则第三级中抓取的值就无法映射,按照这个道理,就应该报出无法同时加载多个包之异常
一对多或多对多的多方数据抓取过来后必须用容器类存,例如Set、List、Map等,主要就在这个容器上
即@ManyToMany或@OneToMany的Many方此时一定用Set容器来存放,而不能用List集合。
下一篇: 使用aop管理日志
推荐阅读
-
2010.04.08———cannot simultaneously fetch multiple bags异常
-
jpa cannot simultaneously fetch multiple bags OneToMany
-
Hibernate抓取策略以及如何避免cannot simultaneously fetch multiple bags异常
-
JPA的cannot simultaneously fetch multiple bags异常的解决
-
使用Hibernate 过程中 报—— cannot simultaneously fetch multiple bags
-
hibernate exception (cannot simultaneously fetch multiple bags)
-
“cannot simultaneously fetch multiple bags”的解决方法