如何在hibernate select中设置输出数据的类型

如何在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

在我的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 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也会向我发布错误消息“参数类型不匹配”。