20

Hibernate を 3.2.5 から4.2.0.CR1にアップグレードしました。メソッドを使用してOracle 10gの現在の行番号を見つけるために、DAOクラスで次のようなメソッドを使用していましたcreateSQLQuery()

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 で、そのような定数はリストされていません。Google 検索では、実際の解決策にたどり着くことができませんでした。では、このバージョンの Hibernate (4.2.0.CR1) の代替手段は何ですか?

4

3 に答える 3

34

この Hinernate.Integer は 3.6.x 以降非推奨です

IntegerType.INSTANCE代わりに使用する必要があります。

于 2013-02-14T18:54:58.393 に答える
6

古いバージョンの Hibernate を使用しているが、3.5.x 以下では非推奨の値を使用したくない場合は、3.6 より前には存在しないnew IntegerType()ため、使用する必要があります。IntegerType.INSTANCE

于 2014-12-04T05:24:11.987 に答える
3

行う:

  • org.hibernate.type.StandardBasicTypes をインポートします。
  • Hibernate.INTEGER を StandardBasicTypes.INTEGER に置き換えます。
于 2015-09-07T21:55:59.317 に答える