2017-10-06 95 views
0

我得到這個錯誤:Hibernate查詢將count轉換爲int?

java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Integer

我的想法是檢查選擇的計數值,但我無法將其轉換。

附上下面的代碼。

任何想法?

public List<Map<String, Object>> contaQuery(String sqlCount) throws MensagemException { 

    Session session = HibernateUtil.getSession(); 
    try { 

     String sql = sqlCount; 
     int query = ((Integer) session.createSQLQuery("select count(*) from (" + sqlCount + ") as subquery") 
       .uniqueResult()); 

     if (query <= 50000) { 

      return rodarQuery(sql); 
     } else { 

      throw new MensagemException("Too many Registers"); 

     } 

    } finally { 
     session.close(); 

    } 

} 
+0

嘗試BigInteger.intValue() – Farlan

+0

謝謝,嘗試,但還不能轉換 –

回答

1

如法蘭 - 評論指出, 通過調用intValue()

final Query query; 
final BigInteger bigResult; 
final int result; 

query = session.createSQLQuery("select count(*) from (" + sqlCount + ") as subquery"); 
bigResult = (BigInteger)query.uniqueResult(); 

if (bigResult != null) 
{ 
    result = bigResult.intValue(); 
} 
else 
{ 
    result = ...some value of your choosing, perhaps 0. 
) 

if (result < 50000) 
... stuff 
+0

從uniqueResult的BigInteger的返回值轉換爲整數這個人工作,你是一個天才:D –