JAVA JPA 列表受其他列表影响

JAVA JPA List affected by other list

我正在使用 Hibernate 和 MySQL 数据库。

我有一个奇怪的问题。

@XmlElement
@ElementCollection(fetch=FetchType.EAGER)
private List<String> features;

@XmlElement
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
private List<ExtraList> extraLists;

我正在使用外观来检索数据。当我从数据库中获取对象时。功能列表有 5 个项目(我应该这样做)。但是 extraLists 也有 5 个项目。此列表应仅包含一个对象。但它包含与功能列表中的项目一样多的该对象的重复项。

如果我将功能列表更改为 4 个项目,extraLists 也将包含 4 个项目。

我试过google,但我不知道如何google解决这个问题,也找不到任何好的结果。

您应该使用这样的查询:

select distinct e
from MyEntity e
left join fetch e.extraLists
where e.id = :id
  1. 一对多集合应该使用 FetchType.LAZY 所以你使用 query-time fetch directive 来加载集合和根实体
  2. distinct 关键字告诉 Hibernate 删除对象引用重复项

@JB Nizet 和@beerbajay 哪里是对的。使用 Set 可以解决我的问题。不幸的是我不能给他们的评论投票