Код: Выделить всё
@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);
Код: Выделить всё
public class Interest {
private final Long id;
private final String name;
private final Long categoryId;
}
Что я пробовал/обдумывал:
- Использование @UseRowReducer - но, похоже, это для результатов Collection
- Использование Multimap - но Я не уверен, как реализовать это с помощью аннотаций JDBI
- Сопоставление вручную на уровне сервиса, но я бы предпочел обработать это на уровне базы данных
- Работает с конфигурацией на основе аннотаций (не плавный API)
- Не требует приведения или дополнительной обработки на уровне сервиса
- Правильно обрабатывает отношения «один ко многим»
Подробнее здесь: https://stackoverflow.com/questions/798 ... nnotations
Мобильная версия