【发布时间】:2020-03-10 19:06:47
【问题描述】:
尝试更干净地解决Postgresql Array Functions with QueryDSL,我已经到此为止了。
// obj.foo is an ArrayPath<String[], String>
bindings.bind(obj.foo).first((path, value) ->
Expressions.booleanTemplate("arraycontains({0}, {1}) = true", path, value));
这最终成为看起来正确的 SQL
where arraycontains(obj0_1_.foo, ?)=true
但似乎String[] 变量未正确传递
org.postgresql.util.PSQLException: ERROR: function arraycontains(character varying[], bytea) 不存在
我该怎么做(如果可能的话)
- 将
String[]值绑定为varchar[]? - 在
booleanTemplate中表达必要的演员表?
【问题讨论】:
-
经过一些调试,绑定值是
StreamWrapper,我认为是String[]的Java序列化@ -AC ED 00 05 75 74 00 ... -
此外,
Arrays.asList(value)绑定为varchar用于单个项目,record用于多个。
标签: postgresql hibernate spring-data-jpa querydsl