最近在Stack Overflow上有一个非常酷的问题,是关于如何用jOOQ将一个嵌套的集合映射成一个JavaMap 。它允许在jOOQ中嵌套集合。这一次,与其把数据嵌套到一个List<UserType> ,为什么不把它嵌套到一个Map<UserType1, UserType2> ?
看一下Sakila数据库,让我们看看我们如何将数据取到这个Javarecord 类型中:
record Film(
String title,
Map<LocalDate, BigDecimal> revenue
) {}
结果类型应该把FILM.TITLE ,以及每天每部电影赚的钱或DVD租赁店的金额包起来。我们可以使用其他的数据结构,但让我们假设这是我们想在用户界面或服务或其他方面消费的东西。
在jOOQ中,和以往一样,由于MULTISET ,我们可以在一个看起来像这样的单一查询中做到这一点:
List<Film> result =
ctx.select(
FILM.TITLE,
multiset(
select(
PAYMENT.PAYMENT_DATE.cast(LOCALDATE),
sum(PAYMENT.AMOUNT))
.from(PAYMENT)
.where(PAYMENT.rental().inventory().FILM_ID
.eq(FILM.FILM_ID))
.groupBy(PAYMENT.PAYMENT_DATE.cast(LOCALDATE))
.orderBy(PAYMENT.PAYMENT

最低0.47元/天 解锁文章
1082

被折叠的 条评论
为什么被折叠?



