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

hibernate, hibernate-mapping, java, jpa, orm

Solution

This is how you add an Enum to a SQLQuery

You define a properties object

Properties params = new Properties();
params.put("enumClass", "UserType");
params.put("type", "12"); /*EnumType.STRING type = 12 */

You resolve your enum type:

Type userEnumType = sessionFactory.getTypeHelper().custom(UserType.class, params);

You execute your query:

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

Problem

I have: ``` @Column(name = "UserType", nullable = false) @Enumerated(EnumType.STRING) private UserType userType; ``` How to return this field by SQL request using addScalar() method?

Original source