Реализация many to many без использования ORM на Java

Всем привет! Впервые тут задаю вопрос, так что слишком строго не судите, попытаюсь корректно объяснить :) Нужно реализовать связь многие ко многим без использования ORM.

Есть сущность Сериал, которая может хранить в себе список нескольких жанров

public class Serial{

    private int id;
    private String name;
    private String description;
    private Set<Genre> genres;

}

Жанр в свою очередь хранит список сериалов, которые к нему относятся

public class Genre{

    private int id;
    private String name;
    private Set<Serial> serials;

}

Пишу такой SQL

select s.id, s.name, s.description, sg.genre_id from serial s
join serial_genre sg on s.id = sg.serial_id

Результат

введите сюда описание изображения

Собственно, что я хочу получить. На уровне dao для сериала, нужен метод findAll. В поля имя и описание будет заполнены полностью, а вот объект жанра будет одержать только соответствующий ему id. Что бы уже на уровне сервиса можно было вызвать два dao для сериала и жанра и по id записать туда соответствующие имя. Собственно объект сериал должен выглядеть так

Serial{id=3, name='Сериал 3', description='Описания сериала 3', genres=[Genre{id=1, name=null}, Genre{id=4, name=null}]}

Ну и на выходе коллекция из 4 сериалов в данном случае. Как через resultSet мне из 11 строк в данном случае, правильно создать 4 объекта?


Ответы (1 шт):

Автор решения: ЮрийСПб

Вроде как должно вот такое сработать:

SELECT s.name, group_concat(sg.genre_id) as genres from serial s
JOIN serial_genre sg on s.id = sg.serial_id
GROUP BY s.id;

Выведет что-то такое:

введите сюда описание изображения

Онлайн пример тут: https://sqliteonline.com/#fiddle=5e5020d7fee7ddcik6wi9ydy

→ Ссылка