java.lang.Long无法强制转换为java.math.BigInteger

Vis*_*amy 2 java hql

我的程序有一个方法,可以获取特定行的计数并将其转换为BigInteger:

private BigInteger getSameSatPremise(ServiceAgreement sa) {
BigInteger count = BigInteger.ZERO;

    StringBuffer queryHql = new StringBuffer();
    queryHql.append("from Table t1");
    Query query = createQuery(queryHql.toString());
    query.addResult("count", "count(distinct t1.column1)");
    if (query.listSize() > 0) {
        count = (BigInteger) query.firstRow();
    }
    return count;
}
Run Code Online (Sandbox Code Playgroud)

当查询结果为0时,转换工作正常.但是当查询结果为2时,我得到如下所示的转换错误.

Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger
Run Code Online (Sandbox Code Playgroud)

谁能帮忙.

Bat*_*eba 11

Java不是C++,你不能编写自己的转换运算符.

在Java中,您需要使用显式函数来执行您想要的操作.在你的情况下,这是更加冗长

BigInteger.valueOf(query.firstRow())