在数据迁移时,出现错误:运算符不存在:布尔=整数提示:没有运算符与给定名称和参数类型匹配

Md.*_*man 7 java mysql postgresql jpa spring-boot

将数据库 mysql v5 迁移到 postgres v12 后,Java Spring 应用程序显示以下错误:错误:运算符不存在:布尔=整数提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。

Md.*_*man 5

布尔类型检查因数据库而异(即 mysql 到 postgres)。考虑下面我所经历的例子。基本实体类BaseEnity {} 有一个活动布尔类型的列,而Order {} 实体类扩展了该类。要选择所有活动订单,mysql 查询为:

select * from Order where active = 1
Run Code Online (Sandbox Code Playgroud)

但是当将数据库迁移到 postgres 时,它不起作用。在postgres中,它显示错误运算符不存在: boolean = integer。正如 postgres 所期望的查询:

select * from Order where active = true
Run Code Online (Sandbox Code Playgroud)

由于 postgres 需要布尔值 true/false,但在 SQL 查询中,该值被设置为整数类型 1,因此我们遇到了提示错误。