Java 为什么数据库中的@ManyToMany获得多对象响应?
我有3个具有多对多关系的表 我的代码配置在课堂预约中被禁止Java 为什么数据库中的@ManyToMany获得多对象响应?,java,hibernate,Java,Hibernate,我有3个具有多对多关系的表 我的代码配置在课堂预约中被禁止 @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "student_appointment", joinColumns = { @JoinColumn(name = "app_id") }, inverseJoinColumns = { @JoinColumn(name = "student_id") }) private List<
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "student_appointment",
joinColumns = { @JoinColumn(name = "app_id") },
inverseJoinColumns = { @JoinColumn(name = "student_id") })
private List<Student> clients;
我想和名单上的3个学生预约一次。然而,结果是3次任命。一个约会有三个学生。我的代码有什么问题?也许查询没有问题。这取决于数据库内容是什么。至少在使用了
JOIN-FETCH
的情况下,您可以为正在查询的实体生成重复的。在JPQL select中添加一个DISTINCT
会删除这些内容,因此您可能需要尝试在您的条件中添加一个DISTINCT。@maDa:这是我的错误。我创建了无法为2字段创建主键的表约会。\u学生。@Kayaman:谢谢支持。在我添加setResultTransformer(Criteria.DISTINCT\u ROOT\u ENTITY)
之后,这就是我的工作,也许查询没有问题。这取决于数据库内容是什么。至少在使用了JOIN-FETCH
的情况下,您可以为正在查询的实体生成重复的。在JPQL select中添加一个DISTINCT
会删除这些内容,因此您可能需要尝试在您的条件中添加一个DISTINCT。@maDa:这是我的错误。我创建了无法为2字段创建主键的表约会。\u学生。@Kayaman:谢谢支持。在我添加setResultTransformer(Criteria.DISTINCT\u ROOT\u ENTITY)
Criteria cr = session.createCriteria(Appointment.class)
.add((Criterion) Restrictions.between("startDate", startDate, endDate));
cr.list();