Мне нужна помощь с Hibernate Projection.
У меня есть класс Activity с свойством «duration», которое является Enum. Длительность - это целочисленное поле в базе данных Oracle. Я аннотировал перечисление.
@TypeDefs({
@TypeDef(
name = "Duration",
typeClass = GenericEnumUserType.class,
parameters = {
@Parameter(name = "enumClass", value = "myproject.Duration"),
@Parameter(name = "identifierMethod", value = "getValue"),
@Parameter(name = "valueOfMethod", value = "getInstanceByValue") })
})
@Entity
@Table(name = "activity")
public class Activity {
...
private Duration duration;
...
}
Перечисление Duration имеет методы getValue () и getInstanceByValue (). Значение является целым числом.
Мне нужно подвести итоги некоторых действий, которые соответствуют моим критериям. Мой DetachedCriteria выглядит примерно так:
DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Activity.class);
...
detachedCriteria.setProjection(Projections.sum("duration"));
Когда я выполняю это detachedCriteria, я получаю следующее ClassCastException:
myproject.Duration cannot be cast to java.lang.Integer
Как суммировать по перечислительному полю? Он работает на базе данных с чистым SQL, поэтому он должен работать и с Hibernate, как я полагаю.
Спасибо за любую помощь.