JOOQ MULTISET构造函数

JOOQ MULTISET constructor

context.select(
      AUTHOR.FIRST_NAME,
      AUTHOR.LAST_NAME,
      multiset(
          selectDistinct(
              BOOK.language().CD,
              BOOK.language().DESCRIPTION)
          .from(BOOK)
          .where(BOOK.AUTHOR_ID.eq(AUTHOR.ID))
      ).as("books"),
      multiset(
          selectDistinct(BOOK_TO_BOOK_STORE.BOOK_STORE_NAME)
          .from(BOOK_TO_BOOK_STORE)
          .where(BOOK_TO_BOOK_STORE.tBook().AUTHOR_ID
              .eq(AUTHOR.ID))
      ).as("book_stores"))
  .from(AUTHOR)
  .orderBy(AUTHOR.ID)
  .fetch();

我无法获得多重集。它抛出错误“无法解析符号多重集”。 我应该添加哪些依赖项 get get multiset constructor?

这个问题最流行的两种解释是:

1。您没有使用正确的 jOOQ 版本

由于您使用的是 Spring Boot,当引入了新的 MULTISET 运算符时,您可能会引入 jOOQ 3.14 而不是 3.15。 Spring Boot 2.x 不会再升级到比 3.14 更新的 jOOQ 版本,因为 jOOQ 3.15 开源版的 JDK 基线为 Java 11,并且 Spring Boot 2.x 仍然需要 Java 8(Spring Boot 3.0 将自己的 baselibe 增加到 Java 17,修复了这个限制)

But you can easily override the jOOQ dependency introduced by the spring-boot-starter-jooq as explained in this blog post here。如果您使用的是 Maven,只需使用以下命令检查您的依赖项:

mvn dependency:tree

2。您缺少通常的静态导入

所有 jOOQ 手册都假设您声明了一些静态导入,包括最重要的一个:

import static org.jooq.impl.DSL.*;

因为手册中记录的 multiset() 只是 DSL.multiset() 的缩写,假设上述静态导入。 See also this section of the manual.