我剛將Hibernate從3.2.5升級到4.2.0.CR1。我在DAO類中使用了類似於以下方法的東西,通過createSQLQuery()
方法在Oracle 10g中查找當前行號。當休眠版本升級到4.2.0時,Hibernate.INTEGER不可用.CR1
SELECT row_num
FROM (SELECT row_number()
OVER (
ORDER BY banner_id DESC) AS row_num,
banner_id
FROM banner_images
ORDER BY banner_id DESC)
WHERE banner_id = :id
@Override
@SuppressWarnings("unchecked")
public int getCurrentRow(String id, int rowsPerPage)
{
return (Integer) sessionFactory
.getCurrentSession()
.createSQLQuery("Above query")
.addScalar("row_num", Hibernate.INTEGER) //<------- ???
.setParameter("id", Long.parseLong(id))
.uniqueResult();
}
如在上述代碼段中所示的.addScalar("row_num", Hibernate.INTEGER)
方法,發出一個編譯時間錯誤。
cannot find symbol
symbol: variable INTEGER
location: class Hibernate
它不在org.hibernate.Hibernate
類中。我使用的NetBeans IDE 7.2.1沒有列出這樣一個常量。谷歌搜索無法讓我找到實際的解決方案。那麼這個版本的Hibernate(4.2.0.CR1)有什麼選擇?因爲3.6.x的
您應該使用IntegerType.INSTANCE
代替