Я хочу отфильтровать родительский элемент на основе дочернего атрибута с использованием спецификации спецификации JPA, я знаю, как я могу это сделать, когда у родителя есть только один дочерний элемент, но я не знаю, как я могу реализовать его, когда у родителя есть коллекция дочерних элементов (s) и я хочу получить последний ребенок из коллекции и отфильтровать его.У меня есть две модели сущностей, как показано ниже:
public class Parent
{
//primary keys and setter/getters implemented in here
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
private Collection<Child> childs;
}
public class Child
{
//primary keys and setter/getters implemented in here
private String childName;
@ManyToOne
private Parent parent;
}
Вот класс спецификации:
public class TestSpecification implements Specification<Parent>
{
private String childName;
public TestSpecification(String childName)
{
this.suspensionState = suspensionState;
}
@Override
public Predicate toPredicate(Root<Parrent> root, CriteriaQuery<?> query, CriteriaBuilder cb)
{
if (suspensionState == null)
{
return cb.isTrue(cb.literal(true)); // always true = no filtering
}
Expression<Collection<Child>> childs = root.get("childs");
//cb.equal...
}
}
Как вы можете видеть, я получаю childs
коллекцию от родителя в методе toPredicate
, ноя не знаю, как я могу получить последний индекс от childs Collection