Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hibernate.INTEGER is unavailable, when the Hibernate version is upgraded to 4.2.0.CR1

Tags:

I have just upgraded Hibernate from 3.2.5 to 4.2.0.CR1. I was using something like the following methods in DAO classes to locate the current row number in Oracle 10g with the createSQLQuery() method.

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

The .addScalar("row_num", Hibernate.INTEGER) method as shown in the above code snippet, issues a compile-time error.

cannot find symbol
symbol:   variable INTEGER
location: class Hibernate

It is not available in the org.hibernate.Hibernate class. The NetBeans IDE I'm using is 7.2.1 is not listing such a constant. Google search couldn't lead me to the actual solution. So what is the alternative in this version of Hibernate (4.2.0.CR1)?

like image 345
Tiny Avatar asked Feb 14 '13 18:02

Tiny


2 Answers

This Hinernate.Integer is deprecated since 3.6.x

You should use IntegerType.INSTANCE instead.

like image 148
danny.lesnik Avatar answered Sep 29 '22 04:09

danny.lesnik


If you are using an older version of Hibernate, but don't want to use a deprecated value while on 3.5.x or below, you'll have to use new IntegerType() because IntegerType.INSTANCE doesn't exist before 3.6.

like image 41
th3morg Avatar answered Sep 29 '22 05:09

th3morg