【问题标题】:spring R2DBC query by enum type枚举类型的spring R2DBC查询
【发布时间】:2020-09-14 11:32:17
【问题描述】:

我的 PostgreSQL 包含一个类似

的枚举
create type my_type as enum('VAL1', 'VAL2')

在Spring boot app中,用MyType.class enum表示

我正在尝试使用DatabasClient 运行一个简单的查询

client.exectute("select * from table where type = :type")...

我得到一个错误:

ceptionFactory$PostgresqlBadGrammarException: operator does not exist: type = character varying

将类型转换为 my_type 不起作用(使用 CAST 和 ::)

我已经为 MyType.class 注册了一个特定的编解码器,该编解码器可以工作 - 无条件查询所有内容都可以使用相关的 @ReadingConverter

【问题讨论】:

    标签: spring-data spring-data-r2dbc r2dbc-postgresql


    【解决方案1】:

    Spring Data R2DBC 和 R2DBC Postgres 都不能将您的枚举类型映射到 Postgres 枚举类型。

    如果您在 SQL 语句中正确转换绑定值/列值,您仍然可以使用表示为字符串的 Postgres 枚举类型。

    例子:

    client.exectute("select type::text from table where type = :type::my_type")
    

    【讨论】:

    • 我不确定我是否理解您的答案 - r2dbc 可以(并且是)使用自定义编解码器映射我的枚举。铸造也不起作用。如果你有答案,添加代码示例会很棒。
    • 如果您能添加一个 Casting 示例,那就太好了。我尝试了所有我知道的铸造方法,但仍然出现字符变化错误
    • 谢谢,很高兴我的问题(也许?)导致了 PR github.com/r2dbc/r2dbc-postgresql/pull/284/files
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    • 2019-08-10
    • 1970-01-01
    • 2022-01-21
    • 2013-03-20
    • 2012-09-16
    • 2020-04-15
    相关资源
    最近更新 更多