के रूप में एनम का उपयोग करके हाइबरनेट क्वेरी, मुझे काम करने के लिए हाइबरनेट (HSQLDB का उपयोग करके) कोई भाग्य नहीं मिल रहा है। क्वेरी कोड लगता है:पैरामीटर
Query query = session.createQuery("from "+tableName+" where CURRENCY = :currency");
query.setParameter("currency",currency);
List<ExchangeRate> list = query.list();
मैं लगातार हो ": org.hsqldb.HsqlException: की वजह से रूपांतरण में असंगत डेटा प्रकार":
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:82)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at org.hibernate.loader.Loader.doList(Loader.java:2529)
at org.hibernate.loader.Loader.doList(Loader.java:2512)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2342)
at org.hibernate.loader.Loader.list(Loader.java:2337)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:495)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:357)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1275)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
at com.rockymountaineer.wsapi.db.test.ExchangeRateDAOTest.getRate(ExchangeRateDAOTest.java:27)
at com.rockymountaineer.wsapi.db.test.ExchangeRateDAOTest.main(ExchangeRateDAOTest.java:39)
Caused by: java.sql.SQLSyntaxErrorException: incompatible data type in conversion
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.throwError(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.setParameter(Unknown Source)
at org.hsqldb.jdbc.JDBCPreparedStatement.setBytes(Unknown Source)
at org.hibernate.type.descriptor.sql.VarbinaryTypeDescriptor$1.doBind(VarbinaryTypeDescriptor.java:57)
at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:93)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:280)
at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:275)
at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:66)
at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:612)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1875)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
at org.hibernate.loader.Loader.doQuery(Loader.java:900)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
at org.hibernate.loader.Loader.doList(Loader.java:2526)
... 10 more
Caused by: org.hsqldb.HsqlException: incompatible data type in conversion
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.types.NumberType.convertToDefaultType(Unknown Source)
... 24 more
वर्ग इतना की तरह टिप्पणी की जाती है:
@Column(name="CURRENCY", nullable=false)
public CurrencyType getCurrency() {
return currency;
}
... और Enum प्रकार की तरह दिखता है:
public enum CurrencyType {
CAD, AUD, EUR, GBP, USD;
/**
* @param currency
* @return
*/
public static CurrencyType getByCurrency(String currency) {
if(currency!=null) {
for(CurrencyType type : CurrencyType.values()) {
if(type.name().equals(currency)) return type;
}
}
return null;
}
}
जो मैं हाइबरनेट दस्तावेज़ों से समझता हूं, उससे पूरी तरह से काम करना चाहिए - यह उल्लेख न करें कि मैं वर्तमान में अन्य हाइबरनेट विधियों का उपयोग करके वस्तुओं को सहेजने, संपादित करने, हटाने, क्वेरी (आईडी द्वारा) करने में सक्षम हूं - लेकिन "createQuery" जिद्दी साबित कर रहा है ।
यदि कोई मदद कर सकता है तो मैं ईमानदारी से इसकी सराहना करता हूं! चीयर्स,
एलेक्स