[
https://issues.apache.org/jira/browse/OLINGO-1464?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mahdi Ansari updated OLINGO-1464:
---------------------------------
Description:
You can see a full report regarding the olingo jpa problem with batches that
have more than one changeset.
[https://github.com/jpenninkhof/odata-boilerplate/issues/1]
As soon as you have multiple change sets you will see the following error:
{code:java}
<?xml version='1.0' encoding='UTF-8'?><error
xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code/> <message xml:lang="en">Error on processing request content:Cannot
begin Transaction on closed Session/EntityManager</message></error>
{code}
The problems is coming from 2 lines that I commented them out as following:
{code:java}
@Override
public BatchResponsePart executeChangeSet(final BatchHandler handler, final
List<ODataRequest> requests)
throws ODataException {
List<ODataResponse> responses = new ArrayList<ODataResponse>();
try {
//oDataJPAContext.getODataJPATransaction().begin();
for (ODataRequest request : requests) {
oDataJPAContext.setODataContext(getContext());
ODataResponse response = handler.handleRequest(request);
if (response.getStatus().getStatusCode() >=
HttpStatusCodes.BAD_REQUEST.getStatusCode()) {
// Roll Back
oDataJPAContext.getODataJPATransaction().rollback();
List<ODataResponse> errorResponses = new ArrayList<ODataResponse>(1);
errorResponses.add(response);
return
BatchResponsePart.responses(errorResponses).changeSet(false).build();
}
responses.add(response);
}
//oDataJPAContext.getODataJPATransaction().commit();
return BatchResponsePart.responses(responses).changeSet(true).build();
} catch (Exception e) {
throw new ODataException("Error on processing request content:" +
e.getMessage(), e);
} finally {
close(true);
}
}{code}
It does not need to `commit` after each changeset!
was:
You can see a full report regarding the olingo jpa problem with batches that
have more than one changeset.
[https://github.com/jpenninkhof/odata-boilerplate/issues/1]
As soon as you have multiple change sets you will see the following error:
{code:java}
<?xml version='1.0' encoding='UTF-8'?><error
xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
<code/> <message xml:lang="en">Error on processing request content:Cannot
begin Transaction on closed Session/EntityManager</message></error>
{code}
The problems is coming from 2 lines that I commented them out as following:
{code:java}
@Override
public BatchResponsePart executeChangeSet(final BatchHandler handler, final
List<ODataRequest> requests)
throws ODataException {
List<ODataResponse> responses = new ArrayList<ODataResponse>();
try {
//oDataJPAContext.getODataJPATransaction().begin();
for (ODataRequest request : requests) {
oDataJPAContext.setODataContext(getContext());
ODataResponse response = handler.handleRequest(request);
if (response.getStatus().getStatusCode() >=
HttpStatusCodes.BAD_REQUEST.getStatusCode()) {
// Roll Back
oDataJPAContext.getODataJPATransaction().rollback();
List<ODataResponse> errorResponses = new ArrayList<ODataResponse>(1);
errorResponses.add(response);
return
BatchResponsePart.responses(errorResponses).changeSet(false).build();
}
responses.add(response);
}
//oDataJPAContext.getODataJPATransaction().commit();
return BatchResponsePart.responses(responses).changeSet(true).build();
} catch (Exception e) {
throw new ODataException("Error on processing request content:" +
e.getMessage(), e);
} finally {
close(true);
}
}{code}
It does not need to `commit` after each changeset!
> Batch with multiple change sets does not work,
> -----------------------------------------------
>
> Key: OLINGO-1464
> URL: https://issues.apache.org/jira/browse/OLINGO-1464
> Project: Olingo
> Issue Type: Question
> Components: odata2-jpa
> Affects Versions: V2 2.0.11
> Reporter: Mahdi Ansari
> Priority: Major
>
> You can see a full report regarding the olingo jpa problem with batches that
> have more than one changeset.
> [https://github.com/jpenninkhof/odata-boilerplate/issues/1]
> As soon as you have multiple change sets you will see the following error:
> {code:java}
> <?xml version='1.0' encoding='UTF-8'?><error
> xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
> <code/> <message xml:lang="en">Error on processing request content:Cannot
> begin Transaction on closed Session/EntityManager</message></error>
> {code}
> The problems is coming from 2 lines that I commented them out as following:
> {code:java}
> @Override
> public BatchResponsePart executeChangeSet(final BatchHandler handler, final
> List<ODataRequest> requests)
> throws ODataException {
> List<ODataResponse> responses = new ArrayList<ODataResponse>();
> try {
> //oDataJPAContext.getODataJPATransaction().begin();
> for (ODataRequest request : requests) {
> oDataJPAContext.setODataContext(getContext());
> ODataResponse response = handler.handleRequest(request);
> if (response.getStatus().getStatusCode() >=
> HttpStatusCodes.BAD_REQUEST.getStatusCode()) {
> // Roll Back
> oDataJPAContext.getODataJPATransaction().rollback();
> List<ODataResponse> errorResponses = new
> ArrayList<ODataResponse>(1);
> errorResponses.add(response);
> return
> BatchResponsePart.responses(errorResponses).changeSet(false).build();
> }
> responses.add(response);
> }
> //oDataJPAContext.getODataJPATransaction().commit();
> return BatchResponsePart.responses(responses).changeSet(true).build();
> } catch (Exception e) {
> throw new ODataException("Error on processing request content:" +
> e.getMessage(), e);
> } finally {
> close(true);
> }
> }{code}
>
> It does not need to `commit` after each changeset!
--
This message was sent by Atlassian Jira
(v8.3.4#803005)