Package org.primefaces.model
Class JpaLazyDataModel<T>
- java.lang.Object
-
- javax.faces.model.DataModel<E>
-
- javax.faces.model.ListDataModel<T>
-
- org.primefaces.model.LazyDataModel<T>
-
- org.primefaces.model.JpaLazyDataModel<T>
-
- Type Parameters:
T
- The model class.
- All Implemented Interfaces:
Serializable
,Iterable<T>
,SelectableDataModel<T>
public class JpaLazyDataModel<T> extends LazyDataModel<T> implements Serializable
BasicLazyDataModel
implementation with JPA and Criteria API.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected Class<T>
entityClass
protected SerializableSupplier<javax.persistence.EntityManager>
entityManager
protected String
rowKeyField
-
Constructor Summary
Constructors Constructor Description JpaLazyDataModel()
For serialization onlyJpaLazyDataModel(Class<T> entityClass, SerializableSupplier<javax.persistence.EntityManager> entityManager)
Constructs a JpaLazyDataModel for usage without enabled selection.JpaLazyDataModel(Class<T> entityClass, SerializableSupplier<javax.persistence.EntityManager> entityManager, String rowKeyField)
Constructs a JpaLazyDataModel with selection support.JpaLazyDataModel(Class<T> entityClass, SerializableSupplier<javax.persistence.EntityManager> entityManager, javax.faces.convert.Converter converter)
Constructs a JpaLazyDataModel with selection support, with an already existingConverter
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
applyFilters(javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<?> cq, javax.persistence.criteria.Root<T> root, Map<String,FilterMeta> filterBy)
protected void
applyGlobalFilters(Map<String,FilterMeta> filterBy, javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<?> cq, javax.persistence.criteria.Root<T> root, List<javax.persistence.criteria.Predicate> predicates)
protected void
applySort(javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<T> cq, javax.persistence.criteria.Root<T> root, Map<String,SortMeta> sortBy)
protected <V> V
convertToType(String value, Class<V> valueType)
int
count(Map<String,FilterMeta> filterBy)
Counts the all available data for the given filters.protected <F extends Comparable>
javax.persistence.criteria.PredicatecreatePredicate(FilterMeta filter, Field filterField, javax.persistence.criteria.Root<T> root, javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.Expression fieldExpression, F filterValue)
T
getRowData(String rowKey)
String
getRowKey(T object)
protected Method
getRowKeyGetter()
List<T>
load(int first, int pageSize, Map<String,SortMeta> sortBy, Map<String,FilterMeta> filterBy)
Loads the data for the given parameters.protected javax.persistence.criteria.Expression
resolveFieldExpression(javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<?> cq, javax.persistence.criteria.Root<T> root, String fieldName)
-
Methods inherited from class org.primefaces.model.LazyDataModel
getConverter, getMessage, getPageSize, getRowCount, getRowData, getRowIndex, getWrappedData, isRowAvailable, iterator, iterator, recalculateFirst, setConverter, setPageSize, setRowCount, setRowIndex, setWrappedData
-
Methods inherited from class javax.faces.model.DataModel
addDataModelListener, getDataModelListeners, removeDataModelListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
entityManager
protected SerializableSupplier<javax.persistence.EntityManager> entityManager
-
rowKeyField
protected String rowKeyField
-
-
Constructor Detail
-
JpaLazyDataModel
public JpaLazyDataModel()
For serialization only
-
JpaLazyDataModel
public JpaLazyDataModel(Class<T> entityClass, SerializableSupplier<javax.persistence.EntityManager> entityManager)
Constructs a JpaLazyDataModel for usage without enabled selection.- Parameters:
entityClass
- The entity classentityManager
- TheEntityManager
-
JpaLazyDataModel
public JpaLazyDataModel(Class<T> entityClass, SerializableSupplier<javax.persistence.EntityManager> entityManager, String rowKeyField)
Constructs a JpaLazyDataModel with selection support.- Parameters:
entityClass
- The entity classentityManager
- TheEntityManager
rowKeyField
- The name of the rowKey property (e.g. "id")
-
JpaLazyDataModel
public JpaLazyDataModel(Class<T> entityClass, SerializableSupplier<javax.persistence.EntityManager> entityManager, javax.faces.convert.Converter converter)
Constructs a JpaLazyDataModel with selection support, with an already existingConverter
.- Parameters:
entityClass
- The entity classentityManager
- TheEntityManager
converter
- The converter, which will be used for converting the entity to a rowKey and vice versa
-
-
Method Detail
-
count
public int count(Map<String,FilterMeta> filterBy)
Description copied from class:LazyDataModel
Counts the all available data for the given filters. In case of SQL, this would execute a "SELECT COUNT ... WHERE ...". In case you dont use SQL and receive bothrowCount
anddata
within a single call, this method should just return0
. You must callLazyDataModel.recalculateFirst(int, int, int)
andLazyDataModel.setRowCount(int)
in yourLazyDataModel.load(int, int, java.util.Map, java.util.Map)
method.- Specified by:
count
in classLazyDataModel<T>
- Parameters:
filterBy
- a map with all filter information (only relevant for DataTable, not for eg DataView)- Returns:
- the data count
-
load
public List<T> load(int first, int pageSize, Map<String,SortMeta> sortBy, Map<String,FilterMeta> filterBy)
Description copied from class:LazyDataModel
Loads the data for the given parameters.- Specified by:
load
in classLazyDataModel<T>
- Parameters:
first
- the first entrypageSize
- the page sizesortBy
- a map with all sort information (only relevant for DataTable, not for eg DataView)filterBy
- a map with all filter information (only relevant for DataTable, not for eg DataView)- Returns:
- the data
-
applyFilters
protected void applyFilters(javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<?> cq, javax.persistence.criteria.Root<T> root, Map<String,FilterMeta> filterBy)
-
applyGlobalFilters
protected void applyGlobalFilters(Map<String,FilterMeta> filterBy, javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<?> cq, javax.persistence.criteria.Root<T> root, List<javax.persistence.criteria.Predicate> predicates)
-
createPredicate
protected <F extends Comparable> javax.persistence.criteria.Predicate createPredicate(FilterMeta filter, Field filterField, javax.persistence.criteria.Root<T> root, javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.Expression fieldExpression, F filterValue)
-
applySort
protected void applySort(javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<T> cq, javax.persistence.criteria.Root<T> root, Map<String,SortMeta> sortBy)
-
resolveFieldExpression
protected javax.persistence.criteria.Expression resolveFieldExpression(javax.persistence.criteria.CriteriaBuilder cb, javax.persistence.criteria.CriteriaQuery<?> cq, javax.persistence.criteria.Root<T> root, String fieldName)
-
getRowData
public T getRowData(String rowKey)
- Specified by:
getRowData
in interfaceSelectableDataModel<T>
- Overrides:
getRowData
in classLazyDataModel<T>
-
getRowKey
public String getRowKey(T object)
- Specified by:
getRowKey
in interfaceSelectableDataModel<T>
- Overrides:
getRowKey
in classLazyDataModel<T>
-
getRowKeyGetter
protected Method getRowKeyGetter()
-
-