先说一下下面的sql
的目的: 筛选出jsonb
格式的数组中包含指定字符串的记录
我使用的spring
自动配置mybatis
,连接的数据库是postgresql
,使用如下查询:
select * from my_tab where media @> '["str"]';
上面的media
是jsonb
格式
能够在命令行顺利执行,但是写到我的xml
里面就不行了,错误提示是jsonb
的@>
这个操作符后面不能是一个字符串.
operator does not exist: jsonb @> character varying Hint: No operator matches the given name and argument type(s)
我又尝试了使用?
操作符,mybatis
却会把它当作参数的占位符
试过转义、用{1,0}
替代?
,都不能奏效,现在想不出解决办法了
spring boot
:1.4.3mybatis spring boot starter
:1.2.0postgresql
:9.5
---更新
现在的解决办法是在传入参数前转换成postgresql
里面的数组的形式,在Mapper
文件里面使用$
代替#
. 但是这样感觉不够优雅, 有没有更好的解决办法?