有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的支持不友好。所以才有了這么個矛盾的關系。