JPA Specification как использовать 'IN'
Хочу создать Specification для фильтрации данных через JPA. Лучше всего на примере вопрос задать:
public class A {
Long id;
private List<B> bEntities;
}
public class B {
Long id;
String title;
A aEntity;
}
Есть 2 класса связанных через JPA (всё-работает, всё ок). Использую Spring DATA
Хотел написать что-то вроде такого в другом уже классе:
public static Specification<A> inRegion(List<String> titles) {
return (root, query, cb) -> {
if (titles== null || titles.isEmpty()) {
return cb.isTrue(cb.literal(true));
}
ListJoin<A, B> titlesJoin = root.joinList("bEntities", JoinType.INNER);
return titlesJoin.in(titles);
};
}
Но это разумеется не работает. Я бы хотел узнать как мне написать эту Specification<A> чтобы сделать sql IN по title из B.
И что поменяется если будет не one-to-many как в примере а many-to-many.
Сори за корявое объяснение. Буду рад любому ответу, спасибо.