मुझे हाइबरनेट में एक देशी क्वेरी का उपयोग करने में परेशानी हो रही है जिसमें एक बीन है जिसमें enum गुण होते हैं। Query.list() को कॉल करते समय मुझे एक InvocationTargetException मिल रहा है। मेरे उदाहरण नीचे है:हाइबरनेट - एनम गुणों के साथ बीन के लिए मूल क्वेरी और उपनाम का उपयोग करें?
@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) कॉल, मैं किस प्रकार (enum प्रकार) col3 के लिए उपयोग करने के लिए पता नहीं है। Hibernate.String काम नहीं कर रहा है! मैंने पूरी तरह से टाइप को छोड़ने की कोशिश की है (query.addScalar ("col3")) लेकिन मुझे वही InvocationTargetException मिलता है। क्या कोई भी इस के साथ मेरी मदद कर सकता है? मेरा मॉडल बदला नहीं जा सकता है और मैं देशी एसक्यूएल क्वेरी के साथ फंस गया हूं। किसी भी विचार की सराहना की जाती है।
यदि आप अपने एसक्यूएल स्टेटमेंट में "col1 as prop1" को अलियासिंग कर रहे हैं, तो क्या हाइबरनेट इसे मैप करने में सक्षम होगा? –