我們都知道在Hibernate中使用createQuery和createSQLQuery的最大差別就是前者是使用hql語句,後者使用的是sql語句
之前在使用createSQLQuery進行select count(*) 查詢時出現一個異常,可能是使用createQuery習慣了,一直沒找到錯誤的原因
原本的代碼是這樣寫的:
long count = (Long) getSessionFactory().getCurrentSession().createSQLQuery(sb.toString()).uniqueResult();
記得使用createQuery這樣寫是沒問題的,但現在這裡一直報BigDecimal格式轉換的異常,後面沒辦法隻能debug以下,發現傳回值就是BigDecimal類型,無奈隻能這麼寫就沒問題了
Query query = getSessionFactory().getCurrentSession()
.createSQLQuery(sb.toString());
Object object = query.uniqueResult();
if (object instanceof BigDecimal) {
BigDecimal bd = (BigDecimal) query.uniqueResult();
count = bd.intValue();
}