我正在使用Hibernate和MySQL数据库。
我有一个奇怪的问题。
@XmlElement
@ElementCollection(fetch=FetchType.EAGER)
private List<String> features;
@XmlElement
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private List<ExtraList> extraLists;
我使用Facade来检索数据。当我从数据库中获取对象时。功能列表有5项(我应该)。但extraLists也有5个项目。此列表应仅包含单个对象。但它包含与该功能列表中的项目一样多的该对象的副本。
如果我将功能列表更改为4个项目,则额外列表也将包含4个项目。
我尝试谷歌,但我不知道如何谷歌这个问题,并找不到任何好结果。
答案 0 :(得分:0)
你应该使用像这样的查询:
select distinct e
from MyEntity e
left join fetch e.extraLists
where e.id = :id
FetchType.LAZY
,因此您使用query-time fetch directive加载集合以及根实体distinct
关键字告诉Hibernate删除对象引用重复项答案 1 :(得分:0)