hibernate查询结果中的重复条目

时间:2016-02-16 15:40:53

标签: java hibernate

模型O具有枚举类型的元素集合。

缩写版

@Entity
class O {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @ElementCollection(fetch=FetchType.EAGER)
    @JoinTable(name = "o_s", joinColumns = { @JoinColumn(name = "o_id") })
    @Column
    private Set<SomeEnum> ss;
}

我正在查询O的所有实例,如下所示

List<O> ret=session.createCriteria(O.class).list();

现在结果列表包含重复的条目。

如果SS字段中有3个值,那么O的相应条目将在结果中出现3次。

如果有2个值,则O的相应条目将在结果中出现2次。

但是,数据库不包含重复的条目。

我已经凭经验证实了这一行为。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

这是由你急切加载的收藏造成的。您需要to set DictinctRootEntityResultTransformer符合条件。

更好的选择,IMO,将使用HQL:

select distinct o from O o