模型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次。
但是,数据库不包含重复的条目。
我已经凭经验证实了这一行为。
我做错了什么?
答案 0 :(得分:2)
这是由你急切加载的收藏造成的。您需要to set DictinctRootEntityResultTransformer符合条件。
更好的选择,IMO,将使用HQL:
select distinct o from O o