Lazydatamodel NotSerializableException подсписок - PullRequest
0 голосов
/ 12 октября 2018

Я реализовал LazyDataModel , используя Primefaces Tutorial и столкнулся с проблемой.

Если I return list.sublist (...) - все работает нормально, но я получаю исключение:

java.io.NotSerializableException: java.util.ArrayList $ SubList.

Я обнаружилэтот список, возвращаемый методом subList (), является экземпляром RandomAccessSubList, который не сериализуем.И я попытался создать новый список.

Если я вернул новый ArrayList (list.sublist (...)) - исключение исчезает, но загружается() метод не вызывается, и я не могу получить следующий фрагмент элементов.

Есть ли способ избавиться от этого надоедливого исключения?

ОБНОВЛЕНИЕ:

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 Ответ

0 голосов
/ 13 октября 2018

Хорошо, я нашел проблему.Отсутствует один из файлов JS Primefaces.

...