С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099

[Hibernate & Spring Data] Получить список объектов сущности из ManyToMany

30.03.2017, 19:45. Показов 2410. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сущность User
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
 
    @Column(name = "username")
    private String username;
 
    @Column(name = "password")
    private String password;
 
    @Transient
    private String confirmPassword;
 
    @ManyToMany
    @JoinTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"),
            inverseJoinColumns = @JoinColumn(name = "role_id"))
    private Set<Role> roles;
 
    @ManyToMany
    @JoinTable(name = "user_playlists", joinColumns = @JoinColumn(name = "user_id"),
            inverseJoinColumns = @JoinColumn(name = "playlist_id"))
    private Set<Playlist> playlists;
 
    //getters & setters
Сущность Playlist
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@Entity
@Table(name = "playlists")
public class Playlist {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
 
    @Column(name = "name")
    private String name;
 
    @Column(name = "channel")
    private String channel;
 
    @Column(name = "link")
    private String link;
 
    @ManyToMany(fetch = FetchType.LAZY, mappedBy = "playlists")
    private Set<User> users;
 
    public Playlist() {
    }
 
    public Playlist(String name, String channel, String link, Set<User> users) {
        this.name = name;
        this.channel = channel;
        this.link = link;
        this.users = users;
    }
 
    //getters & setters
}
Соотвественно, есть таблицы users, playlists, users_playlists(user_id, playlist_id).

Как мне через репозиторий получить список всех плейлистов, который замаплены за определенными пользователя(по их id). В общем, хочу что-то такое:
Java
1
List<Playlist> findByUserID(String userID);
Но как я понимаю, мне необходимо иметь в сущности Playlist проперти userID(но по логике программы, один плейлист может быть у многих пользователей, поэтому такое поле - не вариант).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.03.2017, 19:45
Ответы с готовыми решениями:

Spring JDBC && Hibernate
Здравствуйте, подскажите пожалуйста, сейчас в моих уроках начался Spring+JDBC, есть ли смысл сильно углубляться в этом тему? Насколько я...

Spring Data Hibernate mapping entity without xml
Здравствуйте! Подскажите пожалуйста, как настроить маппинг сущности без использование xml. Тут пишут, что если я навесил @Enity...

Не получается связать Apache Ignite + Spring Data + Hibernate
Хочу сделать следующую вещь: Загрузить данные из бд, используя spring-data и hibernate, в кэш и дальше работать с ним с помощью ignit'а....

2
 Аватар для Gr1f0nn
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
30.03.2017, 20:46
Цитата Сообщение от Artmal Посмотреть сообщение
List<Playlist> findByUserID(String userID);
Найдите нужного пользователя по id и из объекта пользователя достаньте атрибут
Java
1
private Set<Playlist> playlists;
И приведите его к List<Playlist>.
1
88 / 86 / 55
Регистрация: 14.11.2015
Сообщений: 1,099
31.03.2017, 14:05  [ТС]
Gr1f0nn, скажите, а можно как-то прямо в dao получать этот атрибут(список плейлистов) с помощью Spring Data(не писать самому реализацию)? Что-то типо такого:
Java
1
2
3
4
5
6
7
public interface UserDao extends JpaRepository<User, Long> {
    User findByUsername(String username);
 
    User findById(long id);
 
    Set<Playlist> findUsersPlaylists(User user);
}
Добавлено через 8 минут
Да, можно
Java
1
2
3
4
5
public interface PlaylistDao extends JpaRepository<Playlist, Long>{
    Playlist findByLink(String link);
 
    Set<Playlist> findAllByUsers(User user);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2017, 14:05
Помогаю со студенческими работами здесь

Spring & Hibernate уроки
Всем привет, поделитесь хорошими уроками, материалами по Spring и Hibernate. Maven подробное описание так же было бы очень полезно....

[Spring & Hibernate] Обойтись без @Transactional в контроллере
На SO прочитал, что все транзакции должны быть в сервисах и следует избегать @Transactional в контроллерах. Сейчас у меня контроллер...

Hibernate ManyToMany
Помоге пожалуйста или укажите на нормальный рабочий пример. Создавал аннотацией отношения (по некоторым примерам) многие ко многим,...

Получить класс сущности с использованием аннотации (spring jdbc)
Нужно создать свою аннотацию, с помощью которой получать класс сущности (или любого другого класса), и затем этот класс использовать...

[Hibernate] Не идет запись в joinTable @ManyToMany
User @Entity @Table(name = &quot;users&quot;) public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru