Search code examples
javahibernatejpaormhibernate-mapping

How to return an Enum using the addScalar() method with Hibernate


I have:

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

How to return this field by SQL request using addScalar() method?


Solution

  • This is how you add an Enum to a SQLQuery

    1. You define a properties object

      Properties params = new Properties();
      params.put("enumClass", "UserType");
      params.put("type", "12"); /*EnumType.STRING type = 12 */
      
    2. You resolve your enum type:

      Type userEnumType = sessionFactory.getTypeHelper().custom(UserType.class, params);
      
    3. You execute your query:

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