如何使用带有Hibernate的addScalar()方法返回Enum

时间:2014-07-07 19:32:59

标签: java hibernate jpa orm hibernate-mapping

我有:

@Column(name = "UserType", nullable = false)
@Enumerated(EnumType.STRING)
private UserType userType;

如何使用addScalar()方法通过SQL请求返回此字段?

1 个答案:

答案 0 :(得分:9)

这是将Enum添加到SQLQuery的方法

  1. 您定义属性对象

    Properties params = new Properties();
    params.put("enumClass", "UserType");
    params.put("type", "12"); /*EnumType.STRING type = 12 */
    
  2. 您解决了枚举类型:

    Type userEnumType = sessionFactory.getTypeHelper().custom(UserType.class, params);
    
  3. 您执行查询:

    List<SomeEntity> result = getSession().createSQLQuery("select e from SomeEntity ")
        .addScalar("userType", userEnumType)
        .setResultTransformer(Transformers.aliasToBean(SomeEntity.class))
        .list();