java - Spring Data JPA:PostgreSQL:IN子句中的空集合值
问题描述
我正在尝试将我的数据库从 MySQL 迁移到 PostgreSQL。数据没有问题,但我在一个 Spring Data 查询中遇到了这个问题,该查询以前运行良好(在 MySQL 上)。这是“有问题的”查询(为了更清楚地理解它进行了简化):
@Query("SELECT se FROM SomeEntity se " +
"WHERE coalesce(:someValues, null) is null or se.someColumn in (:someValues))")
List<SomeEntity> findBySearchFilter(Set<SomeEnum> someValues);
当someValues
不为 NULL 时,查询工作正常,但是当它为 NULL 时问题就开始了:
Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: character varying = integer
Hint: No operator matches the given name and argument type(s). You might need to add explicit type casts.
Position: <position of the IN clause>
这是我的实体(也被简化了):
@Entity
@Table(name = "some_table")
public class SomeEntity {
SomeEnum someColumn;
@Column(name = "some_column", nullable = false)
public SomeEnum getSomeColumn() {
return someColumn;
}
}
这是我的枚举:
public enum SomeEnum {
A("A"),
B("B"),
C("C");
private String value;
SomeEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
@Override
public String toString() {
return String.valueOf(value);
}
解决方案
推荐阅读
- c# - 如何使用 JsonSerializer 反序列化 BitArray?
- python - 从特定行开始通过 Python 编写公式
- xml - 如何在 XSLT Muenchian 分组中包含空节点集?
- python - 在python函数的两个已知点之间创建一个包含1000个y值的数组
- python - 如何自动为套接字连接分配空闲端口?
- jsp - jsp脚本中的if语句
- macos - Mac OS X 上 cblas.h 的包含路径是什么
- c# - 对外部世界隐藏内部服务,以确保使用正确的高级服务
- r - 使用它们的协调从 data.frame 中提取元素
- r - Plot_ly 3d 绘图问题与解决方法