我在将Big Decimal转换为Integer时遇到问题。 我的进程描述是,首先,我将把整数列表发送到DAO方法,以验证整数是否有效进一步继续。然后在另一个地方处理有效的整数列表。
List<Integer> payments = DAO.checkStatus(payments); //payments is List of Integer
if(payments!=null){
//Do some other operation
DAO.changeStatus(payments); //Here payments is List of Integer which we got from above
checkStatus(List<Integer> payments){
List<Integer> FinalPayments = null;
//I have Hibernate query to get the details from Database
String HQL_Query = "select A.PY from T_Status A where A.status = 4 and (A.PY=:payments)";
Query query = session.CreateQuery(HQL_Query);
FinalPayments = query.list();
return FinalPayments;
}
在DataBase中,PY列是一个BigDecimal列。在表中,它定义为NUMBER。类型。在执行查询时,我获得了FinalPayments列表的BigDecimal值。没有错误/异常。正确返回BigDecimal值。
在核心流程中,在第一种方法之后:
if(payments!=null){
//we're doing something with List of Integer payments right?
//It is passed to 2nd method.
changeStatus(List<Integer> FinalPayments){
String HQL_Query="update T_Status A set A.status = 6 where (A.PY:=FinalPayments)";
Query query = session.CreateQuery(HQL_Query);
query.setParameter("FinalPayments", FinalPayments); //Here i'm getting error
List<Integer> paymentsAfter = query.list();
}
错误是: 无法将java.math.BigDecimal强制转换为java.lang.Integer
在第一和第二种方法之间,我试图将BigDecimal转换为Integer。但是不能再将Integer列表转换为Integer。但我需要那些以Integer格式处理第二种方法。请帮忙..
答案 0 :(得分:0)
在BigDecimal对象上使用intValue()方法获取其int值。
答案 1 :(得分:0)
我不确定我理解你的问题,但是如果你有一个BigDecimal而你想要一个Integer,你可以使用intValue的intValue。
E.g。
List<BigDecimal> decimals = ...
List<Integer> ints = decimals.stream().map(BigDecimal::intValue).collect(Collectors.toList());