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

2022-09-02 09:00:38

我刚刚将Hibernate从3.2.5升级到4.2.0.CR1。我在DAO类中使用了类似以下方法的方法,以使用该方法在Oracle 10g中查找当前行号。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

它在类中不可用。我使用的 NetBeans IDE 是 7.2.1 没有列出这样的常量。谷歌搜索无法引导我找到实际的解决方案。那么这个版本的Hibernate(4.2.0.CR1)中的替代方法是什么?org.hibernate.Hibernate


答案 1

此 Hinernate.Integer 自 3.6.x 起已弃用

您应该改用。IntegerType.INSTANCE


答案 2

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


推荐