2

加入查询代码

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 -> 约翰、马修、威廉、梅根、黛西
  • School2 -> 约翰、威廉、萨曼莎
  • School3 -> 黛西,马修

加入休眠代码的实际结果

  • School1 -> 约翰、马修、威廉、梅根、黛西
  • School2 -> 约翰、威廉、萨曼莎

预期结果

  • School1 -> 约翰
  • 学校 2 -> 约翰

休眠加入让我获得所有学生名为“约翰”的学校。但是当我访问学校对象内的学生对象列表时,它有所有名字的学生。我正在努力实现低于预期的结果。让我知道我在这里做错了什么。提前致谢

4

0 回答 0