我试图使用hibernate将提供的数组与Postgresql中text []列的值进行比较。 这似乎有点棘手。
我试图用postgres方言注册一个函数:
registerFunction("array_in_array", new SQLFunctionTemplate(StandardBasicTypes.BOOLEAN, "?1 @> ?2"));
然后尝试编写查询:
from MyTable mt where (array_in_array(:arr, mt.arr)) = true
执行提供 String [] 参数的查询时,出现以下错误:
org.postgresql.util.PSQLException:错误:运算符不存在:bytea @>文本[]
提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
执行提供列表参数的查询时,我收到以下错误:
org.postgresql.util.PSQLException:错误:运算符不存在:字符变化@>性格变化
提示:没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
它建议使用显式类型转换,所以我做到了。导致以下错误:
使用String []
org.postgresql.util.PSQLException:错误:无法将bytea类型转换为text []
和List:
org.hibernate.dialect.function.TemplateRenderer HHH000174:函数模板预期有1个参数,但遇到2个参数 org.postgresql.util.PSQLException:列索引超出范围:2,列数:1。
还尝试使用本机查询。导致同样的错误。
有什么想法吗?