Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
Artmal
85 / 84 / 54
Регистрация: 14.11.2015
Сообщений: 1,012
#1

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

30.03.2017, 19:45. Просмотров 294. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2017, 19:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос [Hibernate & Spring Data] Получить список объектов сущности из ManyToMany (Java EE):

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

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

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

Spring & Hibernate уроки
Всем привет, поделитесь хорошими уроками, материалами по Spring и Hibernate....

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

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

2
Gr1f0nn
242 / 162 / 133
Регистрация: 30.09.2012
Сообщений: 690
30.03.2017, 20:46 #2
Цитата Сообщение от Artmal Посмотреть сообщение
List<Playlist> findByUserID(String userID);
Найдите нужного пользователя по id и из объекта пользователя достаньте атрибут
Java
1
private Set<Playlist> playlists;
И приведите его к List<Playlist>.
1
Artmal
85 / 84 / 54
Регистрация: 14.11.2015
Сообщений: 1,012
31.03.2017, 14:05  [ТС] #3
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2017, 14:05
Привет! Вот еще темы с решениями:

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

Spring MVC, не обновляется список объектов после удаления
Всем привет. Никак не могу понять, почему так происходит. ...

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven....

Сохранение сущности Hibernate
Всем привет! Возникла интересная ситуация. Я создаю сущность и сохраняю в бд....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru