Hibernate Projections.sum()在枚举上

我需要一些Hibernate Projections的帮助。 我有一个名为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;
...
}
枚举持续时间有方法getValue()和getInstanceByValue()。值是整数。 我需要总结一些与我的标准相符的Acitivities。我的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一起使用somhow我假设。 谢谢你的帮助。     
已邀请:
我会将列映射到另一个int类型的字段。需要将此字段映射为只读以避免歧义:
@Entity
@Table(name = "activity")
public class Activity {
  ...
  private Duration duration;

  @Column(name = "duration", updatable = false, insertable = false) //mapped to the same columnn!
  private int durationNumeric
   ...
}
然后根据以下行重写聚合查询:
detachedCriteria.setProjection(Projections.sum("durationNumeric"));
    

要回复问题请先登录注册