Ответ 1
Этот Hinernate.Integer устарел с 3.6.x
Вместо этого следует использовать IntegerType.INSTANCE
.
Я только что обновил 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
Он недоступен в классе org.hibernate.Hibernate
. Ячейка NetBeans, которую я использую, - это 7.2.1, не указывающая такую константу. Поиск Google не мог привести меня к фактическому решению. Итак, какова альтернатива в этой версии Hibernate (4.2.0.CR1)?
Этот Hinernate.Integer устарел с 3.6.x
Вместо этого следует использовать IntegerType.INSTANCE
.
Если вы используете более старую версию Hibernate, но не хотите использовать устаревшее значение в 3.5.x или ниже, вам придется использовать new IntegerType()
, потому что IntegerType.INSTANCE
не существует до 3.6.
делать: