我有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或注释有什么问题。
如果您需要更多信息,请与我们联系。
谢谢。干杯