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 JPAFinder
JPAFinder.CountQueryCriteria<TT>, JPAFinder.CriteriaBuilderAndRoot<TT>, JPAFinder.QueryCriteria<TT>, JPAFinder.QueryEnhancement<TT>Nested classes/interfaces inherited from interface JPAFinderHelper
JPAFinderHelper.EntityManagerExclusions -
Constructor Summary
ConstructorsConstructorDescriptionDaoHelper(@NonNull Lazy.SerializableSupplier<EntityManager> entityManager, @NonNull Class<TT> entityClass) -
Method Summary
Modifier and TypeMethodDescriptionConvenience method for buildingJPAFinder.QueryCriteriarecord, which containsCriteriaBuilder,RootandCriteriaQuery<RR> JPAFinder.QueryCriteria<RR> buildQueryCriteria(Class<RR> cls) Convenience method for buildingJPAFinder.QueryCriteriarecord of any type, which containsCriteriaBuilder,RootandCriteriaQuerylongcount()count rowslongcount(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:
getEntityManagerin interfaceJPAFinderHelper<TT>- Returns:
SupplierofEntityManager
-
getEntityClass
Returns the entity class- Specified by:
getEntityClassin interfaceJPAFinderHelper<TT>- Returns:
- entity class
-
buildQueryCriteria
Convenience method for buildingJPAFinder.QueryCriteriarecord, which containsCriteriaBuilder,RootandCriteriaQuery- Specified by:
buildQueryCriteriain interfaceJPAFinderHelper<TT>- Returns:
- QueryCriteria of Entity Type
-
buildQueryCriteria
Convenience method for buildingJPAFinder.QueryCriteriarecord of any type, which containsCriteriaBuilder,RootandCriteriaQuery- Specified by:
buildQueryCriteriain 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:
createNativeQueryin 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:
createNativeQueryin interfaceJPANativeQuery<TT>- Parameters:
sql-resultMapping-EntityManager.createNativeQuery(String, String)- Returns:
TypedNativeQuery
-
findEntityManager
Finds a reference to entity manager via CDI- Returns:
Lazy.SerializableSupplierof 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.SerializableSupplierofEntityManager
-