簡體   English   中英

當Hibernate版本升級到4.2.0.CR1時,Hibernate.INTEGER不可用

[英]Hibernate.INTEGER is unavailable, when the Hibernate version is upgraded to 4.2.0.CR1

我剛剛將Hibernate從3.2.5升級到4.2.0.CR1 我在DAO類中使用類似以下方法的東西,使用createSQLQuery()方法在Oracle 10g中找到當前行號。

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開始,不推薦使用此Hinernate.Integer

您應該使用IntegerType.INSTANCE

如果您使用的是舊版本的Hibernate,但是在3.5.x或更低版本時不想使用已棄用的值,則必須使用new IntegerType()因為在3.6之前不存在IntegerType.INSTANCE

做:

  • import org.hibernate.type.StandardBasicTypes;
  • 用StandardBasicTypes.INTEGER替換Hibernate.INTEGER。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM