当项目部署到Linux机器上的tomcat服务器时,我遇到了NamedQuery的问题。我的环境如下:
NamedQuery是
Select dv FROM DocumentVersion dv where dv.isPublished=false
当在Windows机器上执行此查询时,它工作正常但是当项目部署在具有上述配置的服务器上时,页面显示异常并出现以下错误:
错误2015-01-04 22:30:33 org.hibernate.engine.jdbc.spi.SqlExceptionHelper:146 - 错误:运算符 不存在:boolean = integer提示:没有运算符匹配 给定名称和参数类型。您可能需要添加显式类型 管型。位置:649
当我将查询更改为:
时Select dv FROM DocumentVersion dv where dv.isPublished =:isPublished
即。将boolean作为参数传递给NamedQuery,它在两个平台上都可以正常工作。
我想知道我是否需要在linux机器上添加/更新任何配置,或者我做错了什么。
表架构
CREATE TABLE DocumentVersion (
id SERIAL NOT NULL,
uuid varchar(100) NOT NULL,
displayName varchar(100) NOT NULL,
fileName varchar(100) NOT NULL,
fileDescription varchar(255) DEFAULT NULL,
filePath varchar(2048) DEFAULT NULL,
mimeType varchar(255) NOT NULL,
version INTEGER NOT NULL,
fileSize BIGINT NOT NULL,
isPublished boolean NOT NULL DEFAULT false,
PRIMARY KEY (id)
);
答案 0 :(得分:2)
试试这个。
Select dv FROM DocumentVersion dv where dv.isPublished= "false"
或
Select dv FROM DocumentVersion dv where dv.isPublished is false
对于布尔数据类型,PostgreSQL喜欢"true"
和"false"
。
请参阅此处documentation了解更多信息。
答案 1 :(得分:-1)
在查看documentation后首先猜测 - 你应该在大写中使用false
这个词,即FALSE