Code: Select all
@SqlQuery("""
SELECT
e.id AS event_id,
i.id AS interest_id,
i.name AS interest_name,
i.category_id AS category_id
FROM event e
LEFT JOIN event_interest ei ON e.id = ei.event_id
LEFT JOIN interest i ON i.id = ei.interest_id
WHERE e.id IN ()
""")
Map findInterestsByEventIds(@BindList Set eventIds);
Code: Select all
public class Interest {
private final Long id;
private final String name;
private final Long categoryId;
}
Was ich versucht/überlegt habe:
- Verwenden von @UseRowReducer – aber es scheint für Collection-Ergebnisse zu gelten
- Verwenden von Multimap – aber ich bin mir nicht sicher, wie ich das mit JDBI-Annotationen umsetzen soll
- Manuelle Zuordnung in der Serviceschicht – aber ich würde das lieber auf der Datenbankebene handhaben
- mit annotationsbasierter Konfiguration funktioniert (keine fließende API)
- kein Casting oder zusätzliche Verarbeitung in der Serviceschicht erfordert
- die Eins-zu-viele-Beziehung ordnungsgemäß verarbeitet
Mobile version