0

我有会话课

@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);

但是我想了解生成重复的查询、数据库或注释有什么问题。

如果您需要更多信息,请告诉我。

谢谢你。干杯

4

0 回答 0