Hãy thử một cái gì đó như thế này (tôi cho rằng vật nuôi có nhiều chủ):
public static Specification<Pet> ownerNameEqual(String ownerName) {
return new Specification<Pet>() {
@Override
public Predicate toPredicate(Root<Pet> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Join<Pet, Owner> owners = root.join("owners");
criteriaQuery.orderBy(criteriaBuilder.desc(root.get("id")));
return criteriaBuilder.equal(owners.get("name"), ownerName);
}
};
}
Đây chỉ là một ví dụ để tìm kiếm tất cả các vật nuôi có ít nhất một chủ sở hữu có tên bằng ownerName
Nhưng bạn có thể thêm một phương thức List<Pet> findByOwnersNameOrderByIdDesc(String ownerName);
trong kho lưu trữ của bạn thay thế (tương đương với Đặc tả).