联接查询代码
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;
}
数据
-
学校1->约翰、马修、威廉、梅根、黛西
-
学校2->约翰、威廉、萨曼莎
-
学校3->黛西,马修
join hibernate代码的实际结果
-
学校1->约翰、马修、威廉、梅根、黛西
-
学校2->约翰、威廉、萨曼莎
预期结果
Hibernate的加入让我得到了所有学生名为“John”的学校。但是当我访问school对象中的student对象列表时,它有所有名字的student。我正在努力达到一个低于预期的结果。让我知道我在这里做错了什么。提前谢谢