我有会话课
@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;
我有以下休眠代码
@Override
public List<ConversationLabel> retrieve(User user) {
Criteria criteria = super.createCriteria();
criteria.add(Restrictions.eq("user", user));
return (List<ConversationLabel>) criteria.list();
}
在数据库中,我有 2 个标签,它们都指向 1 个用户和 1 个对话。他们指向的用户是同一用户,但对话不同。
所以换句话说,我的查询应该返回 2 行但是我得到的是 4 行。
我知道如何通过使用来防止这个问题
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
但是我想了解生成重复的查询、数据库或注释有什么问题。
如果您需要更多信息,请告诉我。
谢谢你。干杯