问题描述
我正在使用数据透视表创建与休眠的多对多关系。
我创建了三个名为Requirement
,Collaboration
和CollaborationRequirement
的模型,其中CollaborationRequirement
是我的数据透视表。
public class Requirement {
@Id
private Long id;
@OneToMany(mappedBy = "requirement",fetch = FetchType.EAGER,cascade = javax.persistence.CascadeType.ALL)
private Set<CollaborationRequirement> collaborationRequirement = new HashSet<CollaborationRequirement>();
}
public class Collaboration {
@Id
private Long id;
@OneToMany(mappedBy = "collaboration",cascade = javax.persistence.CascadeType.ALL)
private Set<CollaborationRequirement> collaborationRequirements = new HashSet<CollaborationRequirement>();
}
public class CollaborationRequirement {
@Id
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
private Requirement requirement;
@ManyToOne(cascade = CascadeType.ALL)
private Collaboration collaboration;
}
现在,当我想从“需求”表中选择所有行时,会得到重复的数据(恰好是CollaborationRequirement表中具有该需求ID的行数)。
RequirementDao:
public List<Requirement> findAll() {
Session session = getSession();
try {
Criteria criteria;
criteria = session.createCriteria(Requirement.class,"requirement");
criteria.add(Restrictions.sqlRestriction("1=1"));
criteria.addOrder(Order.desc("id"));
List<Requirement> result = criteria.list();
return result;
} finally {
session.close();
}
}
所以我的问题是,为什么会出现这个问题?以及如何解决?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)