学生 - 课程:一对多如何使用Criteria编写以下JPQL?
JPQL:
从学生的学生选择学生,课程学习,其中 student.name =:STUDENTNAME和(course.courseName =:COURSENAME或 course.courseDuration = courseDuration )
让我们假设一个学生可能有10个课程,我想只检索两个有学生 - 课程(2)的记录。
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Student> criteriaQuery = criteriaBuilder.createQuery(Student.class);
Root<Student> studentRoot = criteriaQuery.from(Student.class);
studentRoot.fetch("courses", JoinType.LEFT);
Predicate condition = criteriaBuilder.equal(studentRoot.get("studentName"), "someName");
//how to add course condition here.
criteriaQuery.where(condition);
你的问题不清楚:JPQL,标准和你的描述做了3件不同的事情。你想得到什么?另外,如果一门课程后面有几个学生,那么你有一个ManyToMany,而不是OneToMany。 – 2012-08-07 07:30:42