我有这个简化的JPA实体
@Entity
@Table(name = "students")
public class Student {
@Id
private Integer id;
private String name;
//getters, setters
}
@Entity
@Table(name = "averages")
public class Averages {
@Id
private Integer id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "student_id", referencedColumnName = "id")
private Student student;
private float value;
//getters, setters
}
如何使用JPA Specification和CriteriaBuilder编写此查询?
SELECT students.id
FROM students,
averages
WHERE averages.student_id = students.id
GROUP BY students.id
HAVING AVG(averages.value) > 6
答案 0 :(得分:0)
应该是这样的:
select student.id
from Averages average
join average.student student
group by student.id
having avg(average.value)>6
我无法对此进行测试
编辑:这是使用EntityManager#createQuery(String)