Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate JPQL中的Derby布尔/整数转换_Hibernate_Derby_Jpql_Javadb - Fatal编程技术网

Hibernate JPQL中的Derby布尔/整数转换

Hibernate JPQL中的Derby布尔/整数转换,hibernate,derby,jpql,javadb,Hibernate,Derby,Jpql,Javadb,我得到的错误是: ERROR 42821: Columns of type 'BOOLEAN' cannot hold values of type 'INTEGER'. 对于JPQL查询: SELECT b.id FROM Bar b WHERE b.latest = true 显然是因为Hibernate将一个布尔字段(即“latest”)映射到JavaDB/Derby的一个整数列。但这只在JPQL中访问该列时发生。使用Criteria API时会得到相同的结果 Hibernate已设置

我得到的错误是:

ERROR 42821: Columns of type 'BOOLEAN' cannot hold values of type 'INTEGER'.
对于JPQL查询:

SELECT b.id FROM Bar b WHERE b.latest = true
显然是因为Hibernate将一个布尔字段(即“latest”)映射到JavaDB/Derby的一个整数列。但这只在JPQL中访问该列时发生。使用Criteria API时会得到相同的结果

Hibernate已设置为org.Hibernate.dialent.derbydialent,对于驱动程序org.apache.derby.jdbc.EmbeddedDriver

对于其他版本的JDBC驱动程序,结果相同

大概解决方法是将列映射到包含“Y”和“N”的单个字符。但我更愿意正确地执行此操作


有人也遇到过这个问题吗?

也许您的Hibernate Derby方言与您的Derby版本不完全匹配。Derby对布尔数据类型的处理更改了几个版本,我认为您必须确保客户端使用与布尔数据类型匹配的正确JDBC API。旧版本的Derby仅支持整数,不支持布尔值


在你的问题中提供更多的细节将是非常有价值的。请注意所涉及的所有软件包的精确版本,包括发生错误消息的完整堆栈跟踪,并在程序中出现错误的确切位置发布源代码片段。

将true作为查询参数传递

SELECT b.id FROM Bar b WHERE b.latest = :latest

肯定会有用。

可能是此更改是在当前版本中进行的。我已经尝试了最后三个版本:10.8.2.2、10.8.1.2和10.7.1.1。所有这些版本都使用嵌入式数据库。