我使用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字段 - 也许我只是告诉它源和类别字段是它可以工作的主键。我有点困惑的是,我无法直接解决任何可以理解的问题。
有没有人成功完成这项工作?我应该做些什么?
答案 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;
}
}