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
另请参阅:
我正在使用 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
另请参阅: