当前位置: 首页 > 知识库问答 >
问题:

获取Hibernate条件中的数据类型不匹配

傅志文
2023-03-14

我在Sybase数据库中有一个表,其中有一列is_req。它的数据类型是char(1)。它在我的hbm文件中的属性定义如下:

属性名称="is必需"列="is_req"类型="boolean"

现在,当我尝试使用标准/限制进行比较时,比如:Criteria。添加(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)

如果我尝试做标准。添加(“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)

可以比较这些值吗?

共有1个答案

姬俊能
2023-03-14

您的目标是检索字符并将其转换为布尔值吗?

您可以通过使用通用枚举用户类型来实现这一点:https://community.jboss.org/wiki/Java5EnumUserType?_sscc=t

我过去用过这个来做这件事。

 类似资料:
  • 我有一个如下的实体 错误消息实体如下所示 我使用hibernate标准从数据库中获取所有记录 @SuppressWarnings(“unchecked”) @Override 公共列表listTableOneEntites() { 标准条件=getSession().createCriteria(TableOneEntity.class); 返回(列表)标准。列表(); } 当我打印列表的大小时,

  • Java中有一个类DepartmentPerson,我在Hibernate中映射了一个映射,如下所示: 在类中,我将acceptByPeriod定义为: 每当我在DepartmentPerson上运行查询时,都会收到消息:“java.lang.IllegalArgumentException:参数类型不匹配”。这与acceptByPeriod映射有关,因为当我删除它时,问题就消失了。数组tbl\u

  • 我正在使用此代码并获得类型不匹配的错误,运行时错误'13'错误在下面标记的行中,而具体错误是由于其中条件()在查询...

  • 每当这段代码运行时,我就会得到上面的错误。代码应该将一条记录插入一个表中,然后从另一个表中删除记录。 编辑:我想问题出在“插入”部分。除最后一列外,所有列都是短文本,ItemPrice是一种货币。我也在使用Access

  • 12.1.6.获取数据类型 ContentProvider必须能够给出数据的MIME类型。MIME类型是针对URI而言,表示单个条目和表示多个条目的URI的MIME类型就是不同的。在本章前面,我们曾定义了单个条目的MIME类型vnd.android.cursor.item/vnd.marakana.yamba.status,而多个条目的MIME类型是vnd.android.cursor.dir/v

  • 当我想跑的时候: 我得到: 执行操作“MappingAddAction”的服务异常,java.lang.IllegalArgumentException:参数值[5118]与预期的类型[com.vernuso.trust.server.domain.ClientImport.MappingInfo(N/A)]不匹配 有人能帮助我理解为什么它需要类型而不是类型吗? 我有两个表,如下图所示。Mappi