问题的根本原因在于,当Hibernate提取SQL查询结果时,没有简单的方法来判断哪个子元素属于哪个集合。有关示例的更多详细说明。总结一下,您有以下解决方法:
- 使用subselect分别加载每个集合
@Fetch(FetchMode.SELECT)
- 通过添加索引列来强制使用列表而不是bag
@IndexColumn(name="LIST_INDEX")
- 使用无序集合(如Set)。

问题的根本原因在于,当Hibernate提取SQL查询结果时,没有简单的方法来判断哪个子元素属于哪个集合。有关示例的更多详细说明。总结一下,您有以下解决方法:
@Fetch(FetchMode.SELECT)
@IndexColumn(name="LIST_INDEX")