This PR adds additional methods to BaseEntityService to support querying using JPA Criteria. Similar to the way getPage() works, you can now use a QueryBuilder as parameters to find() or list().
While at it I've added findFirst() variants for find(), similar to JPA.getOptionalSingleResult() vs JPA.getOptionalFirstResult().
Some considerations:
QueryBuilder uses AbstractQuery, but for this use case CriteriaQuery would be better suited. Option is to add an additional functional interface called CriteriaQueryBuilder.
No caching is currently used, but it would make sense to make it possible. Option could be to implement onQuery() similar to onPage(), making it possible to tweak the query with for example caching hints. This leads to two follow ups:
This PR adds additional methods to
BaseEntityService
to support querying using JPA Criteria. Similar to the waygetPage()
works, you can now use aQueryBuilder
as parameters tofind()
orlist()
. While at it I've addedfindFirst()
variants forfind()
, similar toJPA.getOptionalSingleResult()
vsJPA.getOptionalFirstResult()
.Some considerations:
QueryBuilder
usesAbstractQuery
, but for this use caseCriteriaQuery
would be better suited. Option is to add an additional functional interface calledCriteriaQueryBuilder
.onQuery()
similar toonPage()
, making it possible to tweak the query with for example caching hints. This leads to two follow ups: