Caused by: org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags


有3個對象,對象A,對象B,對象C。他們的實體關系為:

1、A中存在List<B>和List<C>,即一個包含另外兩個;

2、A中存在List<B>,B中存在List<C>,即傳遞關系;

存在上面2種情況,並且fetch=eager就會報上面的異常。解決辦法:

方式1、將List改成Set;

方式2、將fetch改成lazy方式;

方式3、利用Hibernate注解:@IndexColumn

方式4、利用JPA的注解:@OrderColumn

上面方式3和4原理都一樣,而方式3是Hibernate專用的,建議用方式4。

3、利用上面方式3或者4獲取到的結果,比如A與B為1對多關系,而B在數據庫中有3條符合條件的記錄,但是查詢出結果A中的List<B>有4個元素,

第一個為null,沒搞明白是為什么。

4、一般而言,沒有特別的需求,都用Set就好了。

5、我這里糾結是因為dubbo的默認rpc工具hessian的反序列化對Set的支持不友好。所以才有了這么個矛盾的關系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM