将GROUP BY与OpenJPA一起使用

时间:2014-07-24 16:50:35

标签: java sql jpa group-by openjpa

我使用OpenJPA将评论从我的数据库加载到评论对象中。注释对象还具有类别,源(字符串)和注释时间字段。这对OpenJPA非常有用,而且我喜欢Comment表中的Comment对象,而且所有这些对象都适用于世界。

对于摘要视图,我有兴趣对类别和来源进行GROUP BY查询,以便对于每个来源,我可以看到有多少评论可用的细分。

SELECT source, category, count(category) FROM Comments GROUP BY source,category

现在,我的想法是使用实​​体管理器创建此查询,并以某种方式使用CommentSummary对象而不是Comment对象。我不知道如何告诉OpenJPA如何做到这一点。看起来使用GROUP BY的所有示例都不考虑自己获取基础对象。

我尝试创建一个名为' CommentSummary'的视图,但OpenJPA想要修改表以添加一个id字段 - 也许我只是告诉它源和类别字段是它可以工作的主键。我有点困惑的是,我无法直接解决任何可以理解的问题。

有没有人成功完成这项工作?我应该做些什么?

1 个答案:

答案 0 :(得分:0)

假设你有一个带有参数source,category和count的构造函数的对象CommentSummary,你可以试试:

SELECT NEW x.y.z.CommentSummary(c.source, c.category, count(c.category)) FROM Comments c GROUP BY c.source, c.category

CommentSummary对象:

package x.y.z;

public class CommentSummary {
  private String source;
  private String category;
  private int categoryCount;

  // attribute getters/setters

  public CommentSummary(String source, String category, int count) {
    this.source = source;
    this.category = category;
    this.count = count;
  }
}