当Hibernate版本升级到4.2.0.CR1时,Hibernate.INTEGER不可用

时间:2013-02-14 18:38:57

标签: java oracle hibernate compiler-errors

我刚刚将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 个答案:

答案 0 :(得分:32)

此Hinernate.Integer自3.6.x以来已弃用

您应该使用IntegerType.INSTANCE代替。

答案 1 :(得分:5)

如果您使用的是较旧版本的Hibernate,但在3.5.x或更低版本时不想使用已弃用的值,则必须使用new IntegerType(),因为IntegerType.INSTANCE没有t在3.6之前存在。

答案 2 :(得分:2)

执行:

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