当前使用版本(必填,否则不予处理)
3.4.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
Wrapper以PostgreSQL的enum类型或者uuid类型的字段作为条件会报出类型转换的错误。
CRUD都有类似的问题
PS: 生成的sql上加了cast就不会出错
重现步骤(如果有就写完整)
val queryCondition = QueryWrapper<OrderModel>()
queryCondition
.eq("xxxEnum", FooEnum.FOO)
IService.list(queryCondition)
报错信息
Error querying database. Cause: org.postgresql.util.PSQLException: ERROR: operator does not exist: xxxEnum = character varying
建议:No operator matches the given name and argument type(s). You might need to add explicit type casts.
其他
希望能提供一种方式来声明这种类型需要进行转换 如果是因为我遗漏了什么而导致该问题,还请指教。
Comment From: miemieYaho
typehandler
Comment From: scientificCommunity
typehandler
org.apache.ibatis.type.JdbcType里没这两种类型
Comment From: miemieYaho
自己写来用
Comment From: scientificCommunity
算了,我觉得这个问题应该跑到mybatis里去提。因为mybatis里没发现关于这方面的定义。 猜测可能是数据协议的问题,因为同样的sql,在psql client运行是没有问题的。
Comment From: scientificCommunity
不对,上面的问题是"Wrapper怎么支持PostgreSQL的enum类型"。在我看来,我用Wrapper的初衷是方便快捷,但是我现在不得不为了这个enum类型而对原本的字段进行显示的cast xxx as varchar。
所以,其实我的问题是,有什么办法能够更优雅的处理针对PostgreSQL的enum类型字段的比对
Comment From: miemieYaho
百度: mybatis typehandler
Comment From: scientificCommunity
。。。