55

1 対多の関係にある 2 つのクラスと、少し奇妙な HQL クエリがあります。すでに投稿されたいくつかの質問を読んだとしても、私には明確ではないようです。

Class Department{
   @OneToMany(fetch=FetchType.EAGER, mappedBy="department")
   Set<Employee> employees;
}
Class Employee{
   @ManyToOne
   @JoinColumn(name="id_department")
   Department department;
}

次のクエリを使用すると、Department オブジェクトが重複します。

session.createQuery("select dep from Department as dep left join dep.employees");

したがって、私は明確に使用する必要があります:

session.createQuery("select distinct dep from Department as dep left join dep.employees");

この動作は予期されたものですか? SQLと比較して、これは珍しいと思います。

4

3 に答える 3

0

結果トランスフォーマーを使用しますCriteria.DISTINCT_ROOT_ENTITY

List result = session.createQuery("hql query")  
                        .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)  
                        .list();
于 2019-12-16T09:39:44.900 に答える