1

我有一个这样的实体(省略任何不必要的代码):

class Client{
    private id;  
    @OneToMany(mappedBy = "client", fetch = FetchType.EAGER)
    private Set<Remark> remarks = new HashSet<Remark>();
    //getters and setters
}

我调用 List clients = session.createCriteria(Client.class)。如果客户有多个评论,我会得到多个相同的客户对象,例如,如果客户有 2 个评论,那么在列表中有两个相同的客户。我认为这不是好的行为,我错过了什么吗?

4

2 回答 2

0

不幸的是,您似乎必须使用criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 才能获得想要的东西。查看nsfyn55粘贴的链接。

于 2012-09-01T14:09:43.697 回答
0

我看起来不像您正在使用 HQL,但为了完整起见,解决此问题的另一种方法是使用distinctHQL 中的关键字。我有理由相信,像下面这样的 HQL 查询也可以解决您的问题。

select distinct c from Client c where c.id = ? 
于 2012-09-01T16:38:21.723 回答