【问题标题】:Hibernate.INTEGER is unavailable, when the Hibernate version is upgraded to 4.2.0.CR1当 Hibernate 版本升级到 4.2.0.CR1 时,Hibernate.INTEGER 不可用
【发布时间】:2013-01-30 15:57:40
【问题描述】:

我刚刚将 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();
}

上面代码sn-p中的.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) 有什么替代方案呢?

【问题讨论】:

    标签: java oracle hibernate compiler-errors


    【解决方案1】:

    做:

    • 导入 org.hibernate.type.StandardBasicTypes;
    • 将 Hibernate.INTEGER 替换为 StandardBasicTypes.INTEGER。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        您应该改用IntegerType.INSTANCE

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-11-08
          • 1970-01-01
          • 1970-01-01
          • 2014-02-20
          • 1970-01-01
          • 2019-02-06
          • 2016-08-27
          • 1970-01-01
          相关资源
          最近更新 更多