Код: Выделить всё
class User {
@ElementCollection
@Column(name = "`location_ids`", columnDefinition = "int[]")
@Type(ListArrayType.class)
private List locationIds;
@Column(name = "`email`")
private String email;
@Column(name = "`deletedAt`")
@Temporal(TIMESTAMP)
private LocalDateTime deletedAt;
}
Код: Выделить всё
final List
predicates = new ArrayList();
predicates.add(criteriaBuilder.equal(root.get("email"), email));
predicates.add(criteriaBuilder.isNull(root.get("deletedAt")));
List arrayPredicates = new ArrayList();
final Expression exp = root.get("locationIds");
for (Integer id : locationIdsFromSearchModel) {
arrayPredicates.add(criteriaBuilder.isMember(id, exp));
}
predicates.add(criteriaBuilder.or(arrayPredicates.toArray(new Predicate[0])));
Я посмотрел вверх и обнаружил, что мне нужно выполнить ЛЮБУЮ операцию над массивом. Я не нашел ссылок на то, как это сделать с помощью Criteria API.
Подробнее здесь: https://stackoverflow.com/questions/786 ... er-integer