天天看點

createSQLQuery使用uniqueResult的一個錯誤

我們都知道在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();
}
           

繼續閱讀