API de criterios de JPA: comparación con una lista en las especificaciones de Spring Data JPA
criteria-api spring-data (1)
Quiero crear una especificación que coincida con un ID de grupo de un objeto de usuario contra una lista de ID. Estaba pensando en usar isMember (como en el código) pero el método no toma la lista.
public static Specification<User> matchCompanyIdsList(final List<Long> groupIds){
return new Specification<User>() {
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder){
final Path<Group> group = root.<Group> get("group");
return builder.isMember(company.<Long>get("id"), companyIds);
}
};
}
Si estoy fuera, ¿cómo lo haría de otra manera?
¿Desea crear una especificación que coincida con todos los usuarios que tienen ID de grupo, que están en la lista de IdI de grupos?
Si es así, podría usar algo como esto (que usará la cláusula SQL IN):
public static Specification<User> matchCompanyIdsList(final List<Long> groupIds){
return new Specification<User>() {
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder builder){
final Path<Group> group = root.<Group> get("group");
return group.in(groupIds);
}
};
}