首页 > 解决方案 > @DiscriminatorColumn 的 JPQL “GROUP BY”

问题描述

我想通过DiscriminatorColumnJPQL 应用聚合函数分组。

例如,我想计算“grain”、“vegetable”、....中每个“food”的子类的卡路里总和(代码片段如下)。我可以通过本机 sql 来计算,即SELECT food_type, SUM(calorie) FROM food GROUP BY food_type;. 但是为了数据库间的兼容性,我想用 JPQL 编写它。

你有什么建议吗?谢谢!

@Entity
@Inheritance
@DiscriminatorColumn(name = "FOOD_TYPE")
@Table
public abstract class Food {
  @Id
  Long foodId;
  @Column
  String name;
  @Column
  Double calorie;
}

@Entity
@DiscriminatorValue("GRAIN")
public class Grain extends Food {
  // some fields
}

@Entity
@DiscriminatorValue("VEGETABLE")
public class Vegetable extends Food {
  // some fields
}

标签: javasqljpajpql

解决方案


推荐阅读