假设与列b对应的Java枚举类型为Foo.ProfileStateEnum,则以下代码段将为您工作。(我使用Hibernate 4.1.6进行了测试)
import java.util.Properties;import org.hibernate.type.Type;import org.hibernate.type.IntegerType;import org.hibernate.internal.TypeLocatorImpl.TypeLocatorImpl;import org.hibernate.type.TypeResolver.TypeResolver;import org.hibernate.type.EnumType;Properties params = new Properties();params.put("enumClass", "Foo.ProfileStateEnum");params.put("type", "12"); Type myEnumType = new TypeLocatorImpl(new TypeResolver()).custom(EnumType.class, params);List<Profile> profileList= getSession().createSQLQuery("select a as ID, b from profiles") .addScalar("ID", IntegerType.INSTANCE) .addScalar("b", myEnumType ) .setResultTransformer(Transformers.aliasToBean(Profile.class)) .list();


