IllegalStateException: Session / EntityManager закрыт - PullRequest
1 голос
/ 24 октября 2019

Я пытаюсь реализовать его Java-код с помощью Hibernate для выполнения запросов SQL:

public List<AttendeeModel> getListOfCds(int firstRow, int rowCount) {
        List<AttendeeModel> cdList = null;
        try {
            session.beginTransaction();
            Criteria criteria = session.createCriteria(AttendeeModel.class);
            criteria.setFirstResult(firstRow);
            criteria.setMaxResults(rowCount);
            if (criteria != null) {
                cdList = (List<AttendeeModel>) criteria.list();
            }
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        }
        return cdList;
    }

    public int countRows() {
        try {
            session.beginTransaction();
            Criteria criteria = session.createCriteria(AttendeeModel.class);
            if (criteria != null) {
                return criteria.list().size();
            }
            session.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            session.getTransaction().rollback();
        }
        return 0;
    }

Но по какой-то причине я получаю эту ошибку:

 java.lang.IllegalStateException: Session/EntityManager is closed

знаете, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 28 октября 2019

Из вашего кода неясно, где объявлено session и как оно заполняется. Учитывая, что это сделано как-то правильно, я подозреваю, что отсутствие фиксации / отката транзакции перед возвратом в countRow приводит к исключению, попробуйте:

public int countRows() {
    int size = 0;
    try {
        session.beginTransaction();
        Criteria criteria = session.createCriteria(AttendeeModel.class);
        if (criteria != null) {
            size = criteria.list().size();
        }
        session.getTransaction().commit();
    } catch (Exception e) {
        e.printStackTrace();
        session.getTransaction().rollback();
    }
    return size;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...