Jooq Multiset - SQL 显示单词 multiset thorwing 语法错误 - Postgres

Jooq Multiset - SQL shows the word multiset thorwing syntax error - Postgres

我正在使用 Jooq 版本 3.16.6 Java 11 和 Spring Boot 2.6.6 和 (PostgreSQL) 14.1

我遇到的问题是多集,使用旧连接方法的非多集查询工作正常。但是,当使用 multiset 并检查 sql 时,我实际上可以在 sql 查询中看到 multiset 这个词,因此它引发了语法错误

var result = 
dslContext.select(USERS.FIRST_NAME,USER_LEVELS.USER_LEVEL_NAME)
        .from(USERS)
        .join(USER_LEVELS)
    .on(USERS.USER_LEVEL_ID.eq(USER_LEVELS.USER_LEVEL_ID))
        .where(USERS.USERNAME.eq("email@email.com"))
        .fetch();

以上是标准的连接方法,效果很好

下面是多集版本

var result =
      dslContext.select(USERS.FIRST_NAME,
            multiset(select(USER_LEVELS.USER_LEVEL_NAME)
                .from(USER_LEVELS)
                .where(USER_LEVELS.USER_LEVEL_ID.eq(USERS.USER_LEVEL_ID)))
)
            .from(USERS)
            .where(USERS.USERNAME.eq("email@email.com"))
            .getSQL();

我正在使用 getSQL 查看 sql 它是 运行 结果如下

select "public"."users"."first_name", 
   multiset(select "public"."user_levels"."user_level_name" 
       from "public"."user_levels" where "public"."user_levels"."user_level_id" = "public"."users"."user_level_id") from "public"."users" where "public"."users"."username" = ?

问题显然是 sql 中的多重集导致语法错误。

我不知道为什么会这样,除非它对我的 postgres 有一些设置(我不认为)

有什么想法吗?

您可能没有正确配置 SQLDialect,例如

spring.jooq.sql-dialect=Postgres

另请参阅: