休眠标准。分组功能在section之间,怎么办?

Hibernate Criteria. Group functions in between section, how to do?

我在创建在 "between" 块中具有 "avg" 函数的休眠条件查询时遇到了一些困难。

Shop.java

的一部分
@Entity
@javax.persistence.Table(name = "shop")
public class Shop {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @OneToMany(mappedBy = "shop", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<Rating> ratings = new ArrayList<Rating>();

Rating.java

的一部分
@Entity
@javax.persistence.Table(name = "rating")
public class Rating {

    @Id
    private int id;

    private int value;
    private String comment;

基本上,我需要创建 SELECT 查询,该查询将 select 来自 Shop 此类实体,其 avg(ratings.value) 介于、大于或小于某些数字之间。我需要了解机制。如果您可以使用 Hibernate Criteria API 编写这样的查询,请帮助我。谢谢!

编辑 1 Criteria 查询应该来自 Session 对象而不是来自 EntityManager。

试试这个。

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Shop > cq = cb.createQuery(Shop.class);
Root<Shop > root = cq.from(Shop.class);
cq.select(root.get("id"), cb.avg(root.get("ratings")));
cq.where( cb.le(cb.avg(root.get("ratings"), 5);
cq.groupBy(c.get("id"));