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.

Сори за корявое объяснение. Буду рад любому ответу, спасибо.


Ответы (0 шт):