使用hibernate的sum()查詢時,新生成的sum()屬性如何對應POJO類的屬性?5
表的字段有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<Stock> getStocks(String hql){
HibernateTemplate ht=this.getHibernateTemplate();
return ht.find(hql)
}
但是現在hql中sum(value)屬性沒有POJO的屬性與之對應,求教求教啊
問題補充:那hql語句從哪裏傳入呢?
網上找了個例子
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();
問題補充:
在實體類中加一個臨時變量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;
}
就是這麼個形式,你再改改,也許就能用了。
這樣或許可以,但是每次新增一個查詢的屬性都要在POJO類中添加對應的屬性會不會很麻煩?有沒有類似我直接寫一個StockUtil的類,添加屬性對應select後的屬性,如id,sum(value)等,然後用hql查詢返回一個StockUtil的List對象。
問題補充:那通過criteria方法可以返回一個List對象,假如我的數據庫中ID字段是char(8)的話,在List對象中對應的id屬性的值只能取到實際id的頭一個字母。也就是把char(8)直接當成char型了。請問除了改數據庫還有沒別的辦法?
hql和criteria
criteria是純對象的查詢