Hibernate - Использовать собственный запрос и псевдоним для Bean со свойствами перечисления?

У меня возникли проблемы с использованием собственного запроса в спящем режиме для псевдонима bean-компонента, содержащего свойства перечисления. Я получаю исключение InvocationTargetException при вызове query.list (). Мой пример ниже:

@Entity(name = "table1")
public class Class1 {
    @Column(name = "col1")
    @NotNull
    private Integer prop1;

    @Column(name = "col2")
    @NotNull
    private String prop2;

    @Column(name = "col3", length = 6)
    @Enumerated(value = EnumType.STRING)
    private MyEnumType prop3;

    // ... Getters/Setters...
}

public List getClass1List(){
    String sql = "select col1 as prop1, col2 as prop2, col3 as prop3 from table1";

    Session session = getSession(Boolean.FALSE);
    SQLQuery query = session.createSQLQuery(sql);
    query.addScalar("col1", Hibernate.INTEGER);
    query.addScalar("col2", Hibernate.STRING);
    query.addScalar("col3", Hibernate.STRING);

    query.setResultTransformer(Transformers.aliasToBean(Class1.class));

    return query.list();
}

Во время вызова query.addScalar ("col3", Hibernate.STRING) я не знаю, какой тип использовать для col3 (тип перечисления). Hibernate.String не работает! Я также попытался полностью отключить тип (query.addScalar ("col3")), но получил то же самое InvocationTargetException. Кто-нибудь может мне с этим помочь? Моя модель не может быть изменена, и я застрял с собственным запросом sql. Любые идеи приветствуются.

6
задан javagruffian 22 July 2011 в 12:29
поделиться