0

I want to run a where in query with Spring JPA Specification and criteria builder. I am having issue where I will receive a List ids from request and run specification query but could't find any way to do so.

This is what I have done so far.

     public class DistributorMasterDataSpecification implements Specification<DistributorMasterData> {
        @Override
        public Predicate toPredicate(Root<DistributorMasterData> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
           return 
                codeSpec()
                .and(idSpec())
                .toPredicate(root, query, criteriaBuilder);
         }

   private Specification<DistributorMasterData> idSpec() {
        return ((root, query, criteriaBuilder) -> 
                Objects.isNull(filterDto.getDistributorIds()) ?
                null : root.get(DistributorMasterData_.ID).in(filterDto.getDistributorIds())
        );
    }
         
}

I am unable to figure out how to prepare where in query with specification. With current implementation I facing the error below

org.springframework.dao.InvalidDataAccessApiUsageException: literal value cannot be null; nested exception is java.lang.IllegalArgumentException: literal value cannot be null

0 Answers0