Srini
Srini

Reputation: 119

Predicate in Repository?

I am using JPA Repository.

public interface XXXTransactionRepository extends AbstractRepository<XXXTransaction> {
    public List<XXXTransaction> findByUserId(Long id);
}

Can I pass predicate in Repository methods like this?

public List<XXXTransaction> findAll(Predicate predicate);

Upvotes: 0

Views: 276

Answers (1)

Adrian Viesca
Adrian Viesca

Reputation: 181

No, but you can use the AbstractRepository.fineOne(Specification spec) in which you can pass a Specification. Here's a sample usage:

    xxxTransactionRepository.findOne(new Specificaiton<XXXTransaction>(){

            @Override
            public Predicate toPredicate(final Root<XXXTransaction> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) {
                return cb.equal(root.get("fieldName",someVar);
            }
    });

You can read more about Specifications at http://www.petrikainulainen.net/programming/spring-framework/spring-data-jpa-tutorial-part-four-jpa-criteria-queries/

Upvotes: 1

Related Questions