Я пытаюсь использовать 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, которая не является сущностью ...
Но я действительно что-то упускаю ...