0

我正在使用 JPA、hibernate 和 Oracle DB。在多次调用方法 findAll(..) 时(比如 1000 次),每次 Oracle 打开一个新游标。在实体管理器事务提交或实体管理器关闭 (lem.close()) 后,打开的游标不会关闭。问题是 oracle 打开 1000 个游标并达到最大打开游标限制并抛出错误 ORA-01000: maximum open cursors exceeded。如何强制 oracle 关闭打开的游标?

public List<T> findAll(Long id1, Long id2, Long id3, boolean cacheResults) {
    EntityManager lem = emf.createEntityManager();
    lem.getTransaction().begin();
    StringBuilder sb = new StringBuilder();
    boolean first = true;
    List<T> listRowValue = lem.createNativeQuery("select * from MASTER b where id = " + id1 + " and id = " + id2 + " and id = " + id3)
            .getResultList();
    lem.getTransaction().commit();
    lem.close();
    return listRowValue;
}
4

0 回答 0