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