将单个表获取到嵌套 Pojo 中

问题描述 投票:0回答:1

我有以下数据库表:

catalog
- author
- book_name
- publication_date

catalog
表中的值看起来像

作者 书名 出版日期
马克·史密斯 如何阅读 2024-01-01
莎拉·多伊 一本书 1826-01-01
莎拉·多伊 第二本书 1855-07-15

我想将表提取到与此类似的

Catalog
POJO 中:

public class Catalog {
    private String author;
    List < BookEntry > book_entries;
}

public class BookEntry {
    private String bookName;
    private Date publicationDate;
}

我使用了多重集(https://www.jooq.org/doc/latest/manual/sql-building/column-expressions/multiset-value-constructor/)运算符在不同的表中执行类似的操作,但是我不知道它是否适合这个特定的用例。

java jooq
1个回答
0
投票

最简单的方法似乎是

MULTISET_AGG()
,在这种情况下:

ctx.select(CATALOG.AUTHOR,
        multisetAgg(CATALOG.BOOK_NAME, CATALOG.PUBLICATION_DATE)
        .convertFrom(r -> r.map(Records.mapping(BookEntry::new))))
   .from(CATALOG)
   .groupBy(CATALOG.AUTHOR)
   .fetch(Records.mapping(Catalog::new))

当然,假设您在这些类上有适当的构造函数,并且您可以处理不规范化此模式的危险。

© www.soinside.com 2019 - 2024. All rights reserved.