Реализация 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

