以多对多(book_author
)关系中的book
和author
表为例。
我现在有这个,它的工作原理:
Map<UUID, List<Book>> booksByAuthorId = dsl
.select(BOOK_AUTHOR.AUTHOR_ID, BOOK_AUTHOR.book())
.from(BOOK_AUTHOR)
.where(BOOK_AUTHOR.AUTHOR_ID.in(authorIds))
.fetchGroups(
BOOK_AUTHOR.AUTHOR_ID,
mapping((a, bookRecord) -> mapping(Book::new).apply(bookRecord)));
但是嵌套的mapping
让我觉得我做错了什么。这真的是最明显的方法吗?
1条答案
按热度按时间tcomlyy61#
你能做到的吧?
或者这个:
它使用反射(在
DefaultRecordMapper
中)将嵌套BOOK_AUTHOR.book()
记录的book列Map到Book
POJO。如果你在代码生成器中启用了<recordsImplementingRecordN/>
标志,你可以在查询中这样做:也许还有其他的方法来“改善”事情,尽管正如我在评论中所说,这似乎是主观的。或者,您正在寻找一个可以添加到jOOQ API的 * 特定 * 操作符?You could request it here。