I have this function for CardBinSpecification
public static Specification<CardBin> dynamicQuery(Map<String, Object> filters) {
return (root, query, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
// Construct predicates based on non-empty parameters
if (filters.containsKey("bin") && !filters.get("bin").toString().isEmpty()) {
predicates.add(criteriaBuilder.equal(root.get("bin"), filters.get("bin").toString()));
}
if (filters.containsKey("bankcode") && !filters.get("bankcode").toString().isEmpty()) {
predicates.add(criteriaBuilder.equal(root.get("bankcode"), filters.get("bankcode").toString()));
}
if (filters.containsKey("bankname") && !filters.get("bankname").toString().isEmpty()) {
predicates.add(criteriaBuilder.equal(root.get("bankname"), filters.get("bankname").toString()));
}
if (filters.containsKey("switchname") && !filters.get("switchname").toString().isEmpty()) {
predicates.add(criteriaBuilder.equal(root.get("switchname"), filters.get("switchname").toString()));
}
// Apply the predicates to the query
query.where(criteriaBuilder.and(predicates.toArray(new Predicate[0])));
// Apply the selections to the query (if needed)
if (filters.containsKey("searchContent")) {
List<String> searchContent = (List<String>) filters.get("searchContent");
List<Selection<?>> selections = new ArrayList<>();
for (String field : searchContent) {
selections.add(root.get(field));
}
query.multiselect(selections.toArray(new Selection<?>[0]));
}
return query.getRestriction();
};
}
and searchContent is [“bankname”,”switchname”]
however I keep getting all of the column within CardBin entity object, how do i fix this?