你如何使用Postgresql包含(@>)并在hibernate中包含(< @)?

时间:2016-12-02 14:06:18

标签: postgresql hibernate

我试图使用hibernate将提供的数组与Postgresql中text []列的值进行比较。 这似乎有点棘手。

到目前为止我尝试过:

Hibernate dialect

我试图用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。

还尝试使用本机查询。导致同样的错误。

有什么想法吗?

0 个答案:

没有答案