【发布时间】:2014-05-31 11:10:54
【问题描述】:
我在 Sybase 数据库中有一个表,其中有一列 is_req。它的数据类型是 char(1)。它在我的 hbm 文件中的属性定义为:
property name="isRequired" column="is_req" type="boolean"
现在,当我尝试使用标准/限制进行比较时:
criteria.add(Restrictions.ne("isRequired", '1'),我得到以下异常:
java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.Boolean
at org.hibernate.type.BooleanType.set(BooleanType.java:37)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:62)
at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:44)
at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1115)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1177)
at org.hibernate.loader.Loader.doQuery(Loader.java:390)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:111)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1322)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:300)
如果我尝试这样做
criteria.add("isRequired", Boolean.TRUE),我得到以下异常:
com.sybase.jdbc2.jdbc.SybSQLException:不允许从数据类型“VARCHAR”到“BIT”的隐式转换。使用 CONVERT 函数运行此查询。
at com.sybase.jdbc2.tds.Tds.processEed(Tds.java:2796)
at com.sybase.jdbc2.tds.Tds.nextResult(Tds.java:2126)
at com.sybase.jdbc2.jdbc.ResultGetter.nextResult(ResultGetter.java:69)
at com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:220)
at com.sybase.jdbc2.jdbc.SybStatement.nextResult(SybStatement.java:203)
at com.sybase.jdbc2.jdbc.SybStatement.queryLoop(SybStatement.java:1578)
at com.sybase.jdbc2.jdbc.SybStatement.executeQuery(SybStatement.java:1563)
at com.sybase.jdbc2.jdbc.SybPreparedStatement.executeQuery(SybPreparedStatement.java:85)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
是否可以比较这些值?
【问题讨论】:
标签: java hibernate sybase criteria