Interface JPAFinder.QueryEnhancement<TT>

Type Parameters:
TT - Entity Type
All Superinterfaces:
BiConsumer<JPAFinder.CriteriaBuilderAndRoot<TT>,CriteriaQuery<?>>
Enclosing interface:
JPAFinder<TT>

public static interface JPAFinder.QueryEnhancement<TT> extends BiConsumer<JPAFinder.CriteriaBuilderAndRoot<TT>,CriteriaQuery<?>>
Convenience interface for use with JPAFinder.CriteriaBuilderAndRoot and JPAFinder.QueryCriteria and is able to compose many enhanced query lambdas together

public record CountAndList(long count, List<UserEntity> list) { };
public CountAndList countAndList(String userName) {
    // add "where fullName = 'userName'" clause
    QueryEnhancement<UserEntity> enhancement = (partial, criteria) -> criteria
            .where(partial.builder().equal(partial.root()
                    .get(UserEntity_.fullName), userName));

    return new CountAndList(jpaFinder.count(enhancement::accept),
            jpaFinder.findAll(enhancement::accept)
            .setHint(QueryHints.BATCH_TYPE, BatchFetchType.IN)
            .getResultList());
}
Author:
lprimak