This is an automated email from the ASF dual-hosted git repository.

mibo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata2.git

commit 43a717cdaf5a6e4795af7705f46cd38689d6a606
Author: Wallace Wan <[email protected]>
AuthorDate: Tue Jun 5 10:57:59 2018 +0800

    [OLINGO-1269] Release database connection when updating a not-existed entity
---
 .../odata2/jpa/processor/core/access/data/JPAProcessorImpl.java    | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
index e8f3070..2aaef0d 100644
--- 
a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
+++ 
b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/access/data/JPAProcessorImpl.java
@@ -365,8 +365,9 @@ public class JPAProcessorImpl implements JPAProcessor {
       final InputStream content, final Map<String, Object> properties, final 
String requestContentType)
       throws ODataJPAModelException, ODataJPARuntimeException {
     Object jpaEntity = null;
+    boolean isLocalTransaction = false;
     try {
-      boolean isLocalTransaction = setTransaction();
+      isLocalTransaction = setTransaction();
       jpaEntity = readEntity(new 
JPAQueryBuilder(oDataJPAContext).build(updateView));
 
       if (jpaEntity == null) {
@@ -402,6 +403,10 @@ public class JPAProcessorImpl implements JPAProcessor {
       em.getTransaction().rollback();
       throw ODataJPARuntimeException.throwException(
           ODataJPARuntimeException.ERROR_JPQL_QUERY_CREATE, e);
+    } finally {
+      if (isLocalTransaction && 
oDataJPAContext.getODataJPATransaction().isActive()) {
+          oDataJPAContext.getODataJPATransaction().rollback();
+      }
     }
     return jpaEntity;
   }

Reply via email to