如何在hibernate select中设置输出数据的类型
在我的mysql数据库中有两个类型为[integer]的字段 这是我的sql 从表中选择a*b作为c 问题是我应该在模型中用字段[c]设置什么样的数据类型 我尝试用[integer][long][String]设置类型,即所有post错误消息“参数类型不匹配”。 非常感谢 代码的一部分:如何在hibernate select中设置输出数据的类型,hibernate,Hibernate,在我的mysql数据库中有两个类型为[integer]的字段 这是我的sql 从表中选择a*b作为c 问题是我应该在模型中用字段[c]设置什么样的数据类型 我尝试用[integer][long][String]设置类型,即所有post错误消息“参数类型不匹配”。 非常感谢 代码的一部分: String hql = " SELECT deviceid,"+ " MAX(CASE cashboxname WHEN 'cash1' THEN cbVal*cbCnt ELSE 0 END) as
String hql = " SELECT deviceid,"+ " MAX(CASE cashboxname WHEN 'cash1' THEN cbVal*cbCnt ELSE 0 END) as cashboxonebal,"
List<DeviceInfo> devBalanceList = super.listBySql(hql,paraList.toArray(),DeviceInfo.class,false);
public <N extends Object>List<N> listBySql(String sql,Object[] args,Map<String,Object> alias,Class<?> clz,boolean hasEntity){
sql = this.initSort(sql);
SQLQuery sqlQuery = this.getSession().createSQLQuery(sql);
this.setAliasParameter(sqlQuery, alias);
this.setParameter(sqlQuery, args);
if(hasEntity){
sqlQuery.addEntity(clz);
}else{
sqlQuery.setResultTransformer(Transformers.aliasToBean(clz));
}
return sqlQuery.list();
}
java class
@Transient
private BigDecimal cashboxonebal;
String hql=“SELECT deviceid,”+“MAX(cashboxname,当'cash1'后为cbVal*cbCnt ELSE 0 END)作为cashboxonebal,”
List devBalanceList=super.listBySql(hql,paraList.toArray(),DeviceInfo.class,false);
公共列表listBySql(字符串sql、对象[]参数、映射别名、类clz、布尔hasEntity){
sql=this.initSort(sql);
SQLQuery SQLQuery=this.getSession().createSQLQuery(sql);
此.setAlias参数(sqlQuery,别名);
this.setParameter(sqlQuery,args);
if(实体){
sqlQuery.addEntity(clz);
}否则{
setResultTransformer(Transformers.aliasToBean(clz));
}
返回sqlQuery.list();
}
java类
@短暂的
私人大十进制现金箱;
取决于数据库,但由于两个整数的乘法可能会溢出,因此我假设long
和numeric
在这里也是有用的类型
既然你说的是“Hibernate”,那么它在Java中也可能是BigDecimal
。解决了
首先,将sql修改为[从表中选择casta*b作为c]
然后在java类中使用bigdecimal
这很有效请发布您的代码。请参考这一点,感谢您在我使用[BigDecimal]设置类型时的回复,hibernate也会向我发布错误消息“参数类型不匹配”。