Lazydatamodel NotSerializableException подсписок
Я реализовал LazyDataModel, используя учебник простых лиц и столкнувшись с проблемой.
Если я возвращаю list.sublist (...) - все работает нормально, но я получаю исключение:
java.io.NotSerializableException: java.util.ArrayList $ SubList.
Я обнаружил, что List, возвращаемый методом subList(), является экземпляром RandomAccessSubList, который не сериализуем. И я попытался создать новый список.
Если я возвращаю новый ArrayList (list.sublist (...)) - исключение исчезает, но метод load() не вызывается, и я не могу получить следующий фрагмент элементов.
Есть ли способ избавиться от этого надоедливого исключения?
ОБНОВИТЬ:
public class LazyApartmentDataModel extends LazyDataModel<MyEntity> implements Serializable{
private EntityManager em;
private String queryText;
private SearchCriteria searchCriteria;
public LazyApartmentDataModel() {}
public LazyApartmentDataModel(EntityManager em, SearchCriteria searchCriteria, int totalSize) {
this.em = em;
prepareQueryText(searchCriteria);
this.searchCriteria = searchCriteria;
this.setRowCount(totalSize);
}
private void prepareQueryForGrid(SearchCriteria searchCriteria) {
StringBuilder query = new StringBuilder("select ... from ... where ... ");
this.queryText = query.toString();
}
@Override
public List<MyEntity> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,Object> filters) {
List<MyEntity> list;
Query q = em.createQuery(this.queryText);
// Paginate
q.setFirstResult(first);
q.setMaxResults(pageSize);
list = query.getResultList();
return list.subList(0,list.size());
}
}
1 ответ
Хорошо, я нашел проблему. Один из файлов JS Primefaces отсутствовал.