我已经用@OneToMany 列表映射了一个 1:N 关系,但是当我访问该列表时,由于 OUTER JOIN 导致结果重复。这是映射的样子:
@Entity
public class Programmer
@ElementCollection(fetch=FetchType.EAGER)
@CollectionTable(name="emails", joinColumns=@JoinColumn(name="id", nullable=false))
@Column(name="email", nullable=false)
protected Set<String> emails = new HashSet<String>();
@OneToMany(mappedBy="programmer", fetch=FetchType.EAGER)
private List <Game> games = new ArrayList<Game>();
Run Code Online (Sandbox Code Playgroud)
当我使用 prog.getGames() 获取属性时,结果会重复,因为 Hibernate SQL 进行了 OUTER JOIN:
from programmer
left outer join emails on programmer.id=emails.id
left outer join game on programmer.id=game.id
where programmer.id=?
Run Code Online (Sandbox Code Playgroud)
有没有不将 List 转换为 Set 的解决方案?我需要使用 prog.getGames() 获取游戏,不能使用自定义 HQL 或 Criteria。