2013-02-14 6 views
15

Hibernateを3.2.5から4.2.0.CR1にアップグレードしました。私はcreateSQLQuery()メソッドでOracle 10gの現在の行番号を見つけるために、DAOクラスの次のメソッドのようなものを使用していました。Hibernate.INTEGERは、Hibernateのバージョンが4.2.0.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クラスでは使用できません。 7.2.1で使用しているNetBeans IDEは、このような定数をリストしていません。 Googleの検索では私を実際のソリューションに導くことはできませんでした。では、このバージョンのHibernate(4.2.0.CR1)の代替案は何ですか?

答えて

25

このHinernate.Integerは、あなたが代わりにIntegerType.INSTANCEを使用する必要があります3.6.xの

で廃止されました。

5

旧バージョンのHibernateを使用していて、3.5.x以降で廃止予定の値を使用しない場合は、IntegerType.INSTANCEが3.6より前に存在しないため、new IntegerType()を使用する必要があります。

1

の操作を行います。

  • 輸入org.hibernate.type.StandardBasicTypes。
  • Hibernate.INTEGERをStandardBasicTypes.INTEGERに置き換えます。
関連する問題