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) を呼び出します。Client に複数の発言がある場合、同じ Client オブジェクトを複数取得します。たとえば、Client に 2 つの発言がある場合、リストには同じクライアントが 2 つあります。これは良い振る舞いだとは思いません。何か不足していますか?

4

2 に答える 2

0

HQL を使用しているようには見えませんが、完全を期すために、これを解決する別の方法distinctは HQL のキーワードを使用することです。以下のような HQL クエリでも問題が解決すると確信しています。

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

残念ながら、あなたがcriteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 望むものを得るために使用しなければならないようです。nsfyn55 によって貼り付けられたリンクを見てください。

于 2012-09-01T14:09:43.697 に答える