Что такое Hibernate-эквивалент Projection.Cast? - PullRequest
2 голосов
/ 30 августа 2011

Я исправил проблему, используя HQL, и она отлично работает.

Но мне нравится Criteria API.(У меня есть несколько операторов ifs в строке запроса для HQL, да) Видимо, Projection.sum (свойство) возвращает double.

Мой класс сущности имеет

@Column(name = "current_volume")   
private Integer currentVolume;

Я получаю ошибку:

org.hibernate.PropertyAccessException: IllegalArgumentException произошла при вызове сеттера se.unox.pejl.entity.value.pejl.PejlDataTrendValue.currentVolume.

Мой эквивалентный рабочий hql

select cast(sum(p.currentVolume/1000) as integer) as currentVolume from      
se.unox.pejl.entity.value.pejl.PejlDataTrendValue as p

Я думаю, что знаю, в чем проблема, но не могу понять, как разыгратьсумма столбцов (который является INT (11) в MySQL) в целое число.Видимо, в NHibernate есть Projection.Cast

Я использую Hibernate 3.6

1 Ответ

2 голосов
/ 30 августа 2011

Исходя из этого сообщения в блоге (если что-то не изменилось между 3,5 и 3,6), тип возвращаемого значения Projections.sum зависит от типа свойства суммируемого свойства:

для свойств, сопоставленных с типами Long, Short, Integer или примитивным целым числом, возвращается значение Long;

для свойств, сопоставленных с типами Float, Double или примитивным типом с плавающей точкой, возвращается значение Double.

Если вы хотите переопределить собственную функциональность, следуйте ответу в этом посте .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...