2017-02-23 30 views
0

有一个与我的MySQL数据库 类型[整数]两个字段,这里是我的sql如何设置出休眠数据的类型选择

选择A * B为C从表

问题我应该在我的模型中设置的数据类型是什么字段[c]

我尝试使用[integer] [long] [String]设置类型,表示所有帖子错误消息“参数类型不匹配”。 非常感谢

部分代码:

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; 
+0

请发表您的代码。 –

+0

请参考,谢谢 – samirliang

回答

0

取决于数据库,但由于两个整数的乘积可能溢出,我认为longnumeric也将是有用的类型在这里。

既然你说过“休眠”,那么在Java中它可能就是BigDecimal

+0

感谢您的回复,当我设置类型[BigDecimal]时,休眠也会发布错误消息“参数类型不匹配”。 – samirliang

0

解决!!! 第一,修改SQL为[选择卡斯塔* B为C从表] ,然后在Java类中使用的BigDecimal 这就是工作