wdgxwzz008
xxnbnu
2011-12-20 13:53

使用hibernate的sum()查询时,新生成的sum()属性如何对应POJO类的属性?

已采纳

[size=medium]我用hibernate逆向工程生成了一个表stock对应POJO类。
表的字段有name(vchar),value(number),id(vchar),主键为id
对应POJO类的属性为name(String),value(double),id(String).
现在我需要做查询 select id,sum(value) from stock group by id
但是hibernate查询时一般都是from stock where ... 即查询的属性可以对应到POJO类的属性。但是sum(value)怎么对应到POJO类中?
我以前的方法是如下:
List getStocks(String hql){
HibernateTemplate ht=this.getHibernateTemplate();
return ht.find(hql)
}

但是现在hql中sum(value)属性没有POJO的属性与之对应,求教求教啊

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • ll89308839 ll89308839 10年前

    hibernate有两种查询方式啊
    hql和criteria
    criteria是纯对象的查询

    点赞 评论 复制链接分享
  • ll89308839 ll89308839 10年前

    你看看这个行不行,我也不清楚为什么你会是char类型

    点赞 评论 复制链接分享
  • ll89308839 ll89308839 10年前

    criteria.setResultTransformer(ResultTransformer paramResultTransformer);

    点赞 评论 复制链接分享
  • lbinzhang lbinzhang 10年前

    select new (a.id,a.value,a.name,a.sum) from 实体类 a group by a.id
    在实体类中加一个临时变量sum,get set 以后
    然后构造方法中加进去
    比如实体类为A
    public class A
    {
    private int id;
    private String name;
    private int value;
    private int sum=0;//临时变量
    public A(){}
    public A(int id,int value,String name,int sum){}
    this.id=id;
    this.name=name;
    this.value=value;
    sum+=this.value;
    }
    就是这么个形式,你再改改,也许就能用了。

    点赞 评论 复制链接分享
  • ll89308839 ll89308839 10年前

    使用Criteria
    网上找了个例子
    List cats=session.createCriteria(Cat.class)
    .setProjection(Projections.projectionList()
    .add(Projections.rowCount())
    .add(Projections.avg("weight"))
    .add(Projections.max("weight"))
    .add(Projections.min("weight"))
    .add(Projections.groupProperty("color"))
    ).addOrder(Order.asc("color")).list();

    点赞 评论 复制链接分享