Hibernate 5 Criteria加入One to Many关系

时间:2018-05-23 03:40:15

标签: hibernate join hibernate-criteria jpa-criteria

加入查询代码

CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<SchoolTO> cquery = builder.createQuery(SchoolTO.class);
Root<SchoolTO> root = cquery.from(SchoolTO.class);
Join<SchoolTO, StudentTO> join = root.join(SchoolTO_.studentList);  
cquery.select(root);
cquery.where(builder.equal(join.get(StudentTO_.name),  "john"));
cquery.distinct(true);
List<School> list = session.createQuery(cquery).getResultList();

学校班级结构

public class School
{
  private List<Student> list;
}

学生班级结构

public class Student
{
  private School school;
} 

数据

  • School1 - &gt; John,Mathew,William,Megan,Daisy
  • School2 - &gt;约翰,威廉,萨曼莎
  • School3 - &gt;黛西,马修

加入Hibernate代码的实际结果

  • School1 - &gt; John,Mathew,William,Megan,Daisy
  • School2 - &gt;约翰,威廉,萨曼莎

预期结果

  • School1 - &gt;约翰
  • School2 - &gt;约翰

hibernate join让我所有学校都有学生名字&#34; john&#34;。但是当我访问学校对象内的学生对象列表时,它会有所有名字的学生。我试图在预期的结果下实现一个。让我知道我在这里做错了什么。提前致谢

0 个答案:

没有答案