Существует таблица с двумя полями station_from и station_to, они связаны с таблицей станций. Я не могу понять, как вызвать предикатную функцию concat для заголовков, а затем вызвать аналогичную предикатную функцию. Пока я понимаю, как сделать поиск только по одному полю.
Сущность
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "station_from_id")
private StationEntity station_from;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "station_to_id")
private StationEntity station_to;
Спецификация
@Override
public Predicate toPredicate(Root<ConnectionEntity> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<>();
if (filter != null) {
String title = filter.getTitle();
if (title != null) {
Subquery<StationEntity> subQuery = criteriaQuery.subquery(StationEntity.class);
Root subRoot = subQuery.from(StationEntity.class);
subQuery.select(subRoot)
.where(criteriaBuilder.like(subRoot.get("title"), "%" + title + "%"));
predicates.add(criteriaBuilder.in(root.get("station_from")).value(subQuery));
}