hibernateでネイティブクエリを使用してenumプロパティを含むBeanに別名を付けるのに問題があります。私は、query.list()が呼び出されたときにInvocationTargetExceptionを取得しています。私の例は以下の通りです:Hibernate - enumプロパティを持つBeanへのネイティブクエリとエイリアスを使用しますか?
@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クエリが残っています。任意のアイデアが評価されます。
SQL文で "col1 as prop1"のエイリアスを行っている場合、Hibernateでマップできるようになりますか? –