Как сопоставить результат запроса JDBI SQL с Map> с помощью аннотаций?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как сопоставить результат запроса JDBI SQL с Map> с помощью аннотаций?

Сообщение Anonymous »

Я использую JDBI v3, и мне нужно выполнить запрос, который возвращает события и связанные с ними интересы. Я хочу сопоставить результат непосредственно с Map, где ключ — это идентификатор события, а значение — список интересов для этого события.

Код: Выделить всё

@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, а не с Map. В документации JDBI четко не показано, как сопоставить результаты с Map.
Что я пробовал/обдумывал:
  • Использование @UseRowReducer - но, похоже, это для результатов Collection
  • Использование Multimap - но Я не уверен, как реализовать это с помощью аннотаций JDBI
  • Сопоставление вручную на уровне сервиса, но я бы предпочел обработать это на уровне базы данных
Конкретный вопрос: Как настроить JDBI для прямого возврата Map с использованием аннотаций в интерфейсе Dao? Я бы предпочел решение, которое:
  • Работает с конфигурацией на основе аннотаций (не плавный API)
  • Не требует приведения или дополнительной обработки на уровне сервиса
  • Правильно обрабатывает отношения «один ко многим»
Если необходим подход Multimap, покажите, как его реализовать с помощью аннотаций JDBI.

Подробнее здесь: https://stackoverflow.com/questions/798 ... nnotations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»