Hibernate返回重复的行

时间:2012-12-28 20:18:54

标签: mysql hibernate duplicates row criteria

我有Conversation类

@Id
@GeneratedValue
private Long id;
@Column(name = "Subject", length = 50)
private String subject;
@Temporal(javax.persistence.TemporalType.TIMESTAMP)
@Column(name = "SentTime")
private Date date;
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)

@JoinTable(name = "Conversation_ConversationParticipants",
           joinColumns = @JoinColumn(name = "ConversationID"), inverseJoinColumns = @JoinColumn(name = "ConversationParticipantID"))
private List<ConversationParticipant> participants;
@OneToMany(cascade = CascadeType.ALL)
@OrderBy("timeEntry desc")
@JoinTable(name = "Conversation_ConversationLogs",
           joinColumns = @JoinColumn(name = "ConversationID"), inverseJoinColumns = @JoinColumn(name = "ConversationLogID"))
private List<ConversationLog> logs; 

我有以下Hibernate代码

@Override
public List<ConversationLabel> retrieve(User user) {
    Criteria criteria = super.createCriteria();
    criteria.add(Restrictions.eq("user", user));

    return (List<ConversationLabel>) criteria.list();
}

在db中,我有2个标签,分别指向1个用户和1个对话。他们指向的用户是同一个用户,但会话不同。

所以换句话说,我的查询应该返回2行,但我得到的是4行。

我知道如何使用

来防止此问题
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

但是我想了解生成重复的查询,db或注释有什么问题。

如果您需要更多信息,请与我们联系。

谢谢。干杯

0 个答案:

没有答案