【发布时间】:2021-10-08 18:32:07
【问题描述】:
我想从此查询中检索数据。但如果 col 只有一个值,则此查询有效。如果有 2 个或更多值,则不起作用。
@Query(value="SELECT * FROM art where color @> ARRAY[:col]",
nativeQuery=true)
List<Recept> findBy( @Param("col") Set<Integer> col);
通过休眠,我看到了查询。这个很好用。
Hibernate: SELECT * FROM art where color @> ARRAY[(?)]
虽然这不起作用。 错误:运算符不存在:整数[] @> 记录[]
Hibernate: SELECT * FROM art where color @> ARRAY[(?, ?)]
我认为问题在括号中。
【问题讨论】:
-
我之前在 PostGres 中从来没有写过这样的查询,但是如果你仔细看错误信息,它会认为
ARRAY[(?, ?)]是record[] -
是的也注意到了,但不知道为什么会这样
-
可能是因为它没想到你会给它
record[]。 -
你想要
array[?,?]- 表达式(?,?)是一个匿名记录类型的单个值(有两个字段) -
正如我所写:
ARRAY[(1, 2)]与ARRAY[1, 2]完全不同。第一个表达式是具有单个元素的数组,第二个表达式是具有两个整数的数组。只需去掉括号。
标签: java arrays spring postgresql