From bdb458a609c4d4d120c7274e2ce262679a96778a Mon Sep 17 00:00:00 2001 From: Gail Badner Date: Fri, 11 Mar 2016 13:55:19 -0800 Subject: [PATCH] HHH-10269 : JDBC Statement is not closed if exception appeared during query execution --- .../main/java/org/hibernate/loader/Loader.java | 5 +++++ .../org/hibernate/jpa/test/query/QueryTest.java | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/hibernate-core/src/main/java/org/hibernate/loader/Loader.java b/hibernate-core/src/main/java/org/hibernate/loader/Loader.java index d95978412ba7..a9f6a38a9e01 100644 --- a/hibernate-core/src/main/java/org/hibernate/loader/Loader.java +++ b/hibernate-core/src/main/java/org/hibernate/loader/Loader.java @@ -2130,6 +2130,11 @@ protected final ResultSet getResultSet( session.getJdbcCoordinator().afterStatementExecution(); throw sqle; } + catch (HibernateException he) { + session.getJdbcCoordinator().getResourceRegistry().release( st ); + session.getJdbcCoordinator().afterStatementExecution(); + throw he; + } } protected void autoDiscoverTypes(ResultSet rs) { diff --git a/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/query/QueryTest.java b/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/query/QueryTest.java index 16e66424364b..f7e95d5d5021 100644 --- a/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/query/QueryTest.java +++ b/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/query/QueryTest.java @@ -1055,4 +1055,20 @@ public void testTypedScalarQueries() { em.close(); } + + @Test + @TestForIssue( jiraKey = "HHH-10269") + public void testFailingNativeQuery() { + final EntityManager entityManager = getOrCreateEntityManager(); + // Tests that Oracle does not run out of cursors. + for (int i = 0; i < 1000; i++) { + try { + entityManager.createNativeQuery("Select 1 from NotExistedTable").getResultList(); + fail( "expected PersistenceException" ); + } catch (PersistenceException e) { + // expected + } + } + + } }