Class DaoHelper<TT>
java.lang.Object
com.flowlogix.jeedao.DaoHelper<TT>
- Type Parameters:
TT
-
- All Implemented Interfaces:
JPAFinder<TT>
,JPAFinderHelper<TT>
,JPANativeQuery<TT>
,Serializable
Lightweight wrapper around common JPA methods
This is the primary class in the
com.flowlogix.jeedao
package
Implementation of JPAFinder
interface- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.flowlogix.api.dao.JPAFinder
JPAFinder.CountQueryCriteria<TT>, JPAFinder.CriteriaBuilderAndRoot<TT>, JPAFinder.QueryCriteria<TT>, JPAFinder.QueryEnhancement<TT>
Nested classes/interfaces inherited from interface com.flowlogix.api.dao.JPAFinderHelper
JPAFinderHelper.EntityManagerExclusions
-
Constructor Summary
ConstructorsConstructorDescriptionDaoHelper
(@NonNull Lazy.SerializableSupplier<EntityManager> entityManager, @NonNull Class<TT> entityClass) -
Method Summary
Modifier and TypeMethodDescriptionConvenience method for buildingJPAFinder.QueryCriteria
record, which containsCriteriaBuilder
,Root
andCriteriaQuery
<RR> JPAFinder.QueryCriteria
<RR> buildQueryCriteria
(Class<RR> cls) Convenience method for buildingJPAFinder.QueryCriteria
record of any type, which containsCriteriaBuilder
,Root
andCriteriaQuery
long
count()
count rowslong
count
(Consumer<JPAFinder.CountQueryCriteria<TT>> countQueryCriteria) count with enriched, composable criteriacreateNativeQuery
(String sql, Class<?> resultClass) Creates a type-safe JPA native querycreateNativeQuery
(String sql, String resultMapping) Creates a type-safe JPA native queryfindAll()
finds all entitiesfindAll
(Consumer<JPAFinder.QueryCriteria<TT>> queryCriteria) find all entities with enriched, composable criteriaFinds a reference to entity manager via CDIfindEntityManager
(@NonNull List<Class<? extends Annotation>> qualifiers) Finds a reference to entity manager via CDIfindRange
(long min, long max) find entities given a specified rangefindRange
(long min, long max, Consumer<JPAFinder.QueryCriteria<TT>> queryCriteria) find entities with enriched, composable criteria given a specified rangeReturns the entity classEntity Manager cannot be saved because it's not thread-safe However, supplier can be returned
-
Constructor Details
-
DaoHelper
public DaoHelper(@NonNull @NonNull Lazy.SerializableSupplier<EntityManager> entityManager, @NonNull @NonNull Class<TT> entityClass)
-
-
Method Details
-
findAll
finds all entities -
findAll
find all entities with enriched, composable criteriaExample:
findAll(enhancement::accept)
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()); }
-
findRange
find entities given a specified range -
findRange
public TypedQuery<TT> findRange(long min, long max, Consumer<JPAFinder.QueryCriteria<TT>> queryCriteria) find entities with enriched, composable criteria given a specified range -
count
-
count
-
getEntityManager
Entity Manager cannot be saved because it's not thread-safe However, supplier can be returned- Specified by:
getEntityManager
in interfaceJPAFinderHelper<TT>
- Returns:
Supplier
ofEntityManager
-
getEntityClass
Returns the entity class- Specified by:
getEntityClass
in interfaceJPAFinderHelper<TT>
- Returns:
- entity class
-
buildQueryCriteria
Convenience method for buildingJPAFinder.QueryCriteria
record, which containsCriteriaBuilder
,Root
andCriteriaQuery
- Specified by:
buildQueryCriteria
in interfaceJPAFinderHelper<TT>
- Returns:
- QueryCriteria of Entity Type
-
buildQueryCriteria
Convenience method for buildingJPAFinder.QueryCriteria
record of any type, which containsCriteriaBuilder
,Root
andCriteriaQuery
- Specified by:
buildQueryCriteria
in interfaceJPAFinderHelper<TT>
- Parameters:
cls
- Type of Query Criteria- Returns:
- QueryCriteria of the same Entity Type as the parameter
-
createNativeQuery
Creates a type-safe JPA native querypublic List<UserEntity> findByNative(String sql) { return jpaFinder.createNativeQuery(sql, jpaFinder.getEntityClass()).getResultList(); }
- Specified by:
createNativeQuery
in interfaceJPANativeQuery<TT>
- Parameters:
sql
-resultClass
-EntityManager.createNativeQuery(String, Class)
- Returns:
TypedNativeQuery
-
createNativeQuery
Creates a type-safe JPA native querypublic List<UserEntity> findByNative(String sql) { return jpaFinder.createNativeQuery(sql, jpaFinder.getEntityClass()).getResultList(); }
- Specified by:
createNativeQuery
in interfaceJPANativeQuery<TT>
- Parameters:
sql
-resultMapping
-EntityManager.createNativeQuery(String, String)
- Returns:
TypedNativeQuery
-
findEntityManager
Finds a reference to entity manager via CDI- Returns:
Lazy.SerializableSupplier
of defaultEntityManager
-
findEntityManager
public static Lazy.SerializableSupplier<EntityManager> findEntityManager(@NonNull @NonNull List<Class<? extends Annotation>> qualifiers) Finds a reference to entity manager via CDI- Parameters:
qualifiers
- for the entity manager, or empty list- Returns:
Lazy.SerializableSupplier
ofEntityManager
-