小编sso*_*m07的帖子

Hibernate OneToMany 列表中的重复结果

我已经用@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。

java sql hibernate duplicates

2
推荐指数
1
解决办法
3057
查看次数

标签 统计

duplicates ×1

hibernate ×1

java ×1

sql ×1