Mam problem z użyciem natywnego zapytania w trybie hibernacji do aliasu komponentu bean, który zawiera właściwości enum. Otrzymuję wyjątek InvocationTargetException, gdy wywoływana jest metoda query.list(). Mój przykład jest poniżej:Hibernate - Użyj natywnego zapytania i aliasu do Bean z właściwościami enum?
@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();
}
Podczas query.addScalar ("Col3" Hibernate.STRING) wezwanie, nie wiem jaki typ użyć do Col3 (typ enum). Hibernate.String nie działa! Próbowałem również całkowicie wyłączyć ten typ (query.addScalar ("col3")), ale otrzymuję ten sam wyjątek InvocationTargetException. Czy ktoś może mi przy tym pomóc? Mój model nie może zostać zmieniony i utknąłem w natywnym zapytaniu SQL. Wszelkie pomysły są doceniane.
Jeśli aliasing "col1 as prop1" w wyciągu sql, czy Hibernate będzie w stanie go zamapować? –