当前使用版本(必填,否则不予处理)

3.4.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

WrapperPostgreSQLenum类型或者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

所以,其实我的问题是,有什么办法能够更优雅的处理针对PostgreSQLenum类型字段的比对

Comment From: miemieYaho

百度: mybatis typehandler

Comment From: scientificCommunity

。。。