【问题标题】:IllegalStateException: Session/EntityManager is closedIllegalStateException:会话/EntityManager 已关闭
【发布时间】:2019-10-24 14:57:46
【问题描述】:

我正在尝试使用 Hibernate 实现他的 Java 代码以进行 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

你知道我该如何解决这个问题吗?

【问题讨论】:

  • 在哪个语句抛出异常?
  • ...在countRows() 中,如果criteria != null,事务保持打开状态,这是有意的吗?
  • 我从教程中复制了代码。我不知道。

标签: java hibernate


【解决方案1】:

从您的代码中,不清楚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;
}

【讨论】:

    猜你喜欢
    • 2019-02-22
    • 2012-12-24
    • 1970-01-01
    • 2010-11-29
    • 2019-09-11
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多