Programming
HR
How to Typesafely Map a Nested SQL Collection into a Nested Java Map with jOOQ
['View All Posts Lukaseder', 'I Made Jooq']
Java, SQL and jOOQ.
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_DATE.cast(LOCALDATE)) ) // Convert Field<Result<Record2<LocalDate, BigDecimal>>> // to Field<Map<LocalDate, BigDecimal>> .convertFrom(r -> r.collect(Records.intoMap()) ) .from(FILM) .orderBy(FILM.TITLE) // Convert Record2<String, Map<LocalDate, BigDecimal>> // to List<Film> .fetch(Records.mapping(Film::new)) (the multiset field type) To Field<Map<LocalDate, BigDecimal>> (the mapped type) It does so by collecting all the Record2<LocalDate, BigDecimal> records of the nested collection into a Map<LocalDate, BigDecimal> using…