将BigDecimal转换为Integer时出现问题

时间:2015-06-18 19:00:57

标签: java

我在将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

DAO方法实现

  1. 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.
    
  2. 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格式处理第二种方法。请帮忙..

2 个答案:

答案 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());