У меня возникли проблемы с использованием собственного запроса в спящем режиме для псевдонима 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. Любые идеи приветствуются.