【问题标题】:Using order by with aggregate functions in Hibernate Criteria API without projection在 Hibernate Criteria API 中将 order by 与聚合函数一起使用,无需投影
【发布时间】:2017-02-16 12:25:47
【问题描述】:

如何将以下 SQL 查询转换为 Hibernate Criteria API 和 HQL。

SELECT product.* FROM product JOIN product_likes ON product_likes.product = product.id 
    GROUP BY product.id 
    ORDER BY COUNT(product_likes.id) DESC

在列表中我只想要 Product 类实体。

Product 和 ProductLikes 具有一对多的关系。

类产品

@Entity
public class Product {

    @Id
    @GeneratedValue
    private long id;

    private String name;

    @OneToMany(mappedBy = "product")
    private ProductLikes productLikes;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public ProductLikes getProductLikes() {
        return productLikes;
    }

    public void setProductLikes(ProductLikes productLikes) {
        this.productLikes = productLikes;
    }

}

类 ProductLikes

@Entity
public class ProductLikes {

    @Id
    @GeneratedValue
    private long id;

    @ManyToOne
    private Product product;

    @ManyToOne
    private User user;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public Product getProduct() {
        return product;
    }

    public void setProduct(Product product) {
        this.product = product;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}

【问题讨论】:

  • 请发布您的班级映射
  • @SergeiBednar Product 和 ProductLikes 有一对多的关系

标签: hibernate hql jpql hibernate-criteria


【解决方案1】:

查看此问题以讨论实体的检索,您无法避免使用投影,但我认为它可以满足您的需求。具体看杰罗姆的回答:

https://stackoverflow.com/a/29838324/6827719

这是一个非常简单的问题,用户询问如何通过投影进行排序:

How to apply order on hibernate projection result

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2010-12-19
    • 2010-10-26
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多