Спецификация JPA данных Spring с отношением MayToMany - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь использовать Specification для построения критериев поиска с помощью Spring Data JPA.

У меня есть 2 сущности

@Entity
public class User {
    @Id
    private Long userId;

    @ManyToMany
    @JoinColumn(name="locationId")
    @JsonIgnore
    private List<Location> locations;

    //getters and setters

А Местоположение

public class Location {

    @Id
    private long locationId;

    @ManyToMany(fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.REMOVE, CascadeType.DETACH,
            CascadeType.REFRESH }, mappedBy = "locations")
    @JsonIgnore
    private List<User> users;

    //getters and setters

Теперь я хотел бы найти всех пользователей с заданным списком местоположений, поэтому я пытаюсь создать предикат.

Моя проблема - получить таблицу отношений между двумя сущностями ... Я пытаюсь таким образом

Root<Location> second = query.from(Location.class);
Expression<Collection<Root>> userLocations = second.get("users");
return builder.and(builder.isMember(root, userLocations));

Это запрос sql, который мне нужен

select distinct * from User u 
join User_Location ul on u.userId = ul.`users_userId`
where ul.`locations_locationId` in (1,2,3...)

Главное для меня трудно сказать Spring использовать таблицу отношений User_Location, которая не является сущностью ...

Но я действительно что-то упускаю ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...