Try calling context.rollbackChanges() or just create a new context and start over.
On Mon, Apr 11, 2016 at 10:31 AM Juan Manuel Diaz Lara <[email protected]> wrote: > > > I am using 4.0.M3. > I used the following solution, but the problem is that after > commitChanges() the dataobjetcs are set to PersistenceState.COMMITED, if > the stored procedure fails Cayenne does a DB rollback (that's ok), but > dataobjects stay COMMITED, so I can not retry the this transaction after > errors are solved. > Is there any way to revert the persistenceState to their values before > commitChanges if I detect the stored procedure failed ? > > cayenneRuntime.performInTransaction(new > TransactionalOperation<Integer>() > { > > @Override > public Integer perform() { > context.commitChanges(); > //... > SQLTemplate s = new SQLTemplate("SELECT > pkg_inventario_fisico.apply( #bind($idAlmacen, 'VARCHAR')) AS id", true); > s.setParamsArray(a); > @SuppressWarnings("unchecked") > List<DataRow> rows = > CayenneDao.instance.context.performQuery(s); > DataRow row = rows.get(0); > //... > return null; > } > > } > ); > Atte. Juan Manuel Díaz Lara > > On Monday, April 11, 2016 10:06 AM, Mike Kienenberger < > [email protected]> wrote: > > > See the bottom part of this page starting at "In the second scenario": > > > https://cayenne.apache.org/docs/4.0/cayenne-guide/persistent-objects-objectcontext.html#transactions > > > On Mon, Apr 11, 2016 at 10:54 AM, Juan Manuel Diaz Lara > <[email protected]> wrote: > > > > > > I have a dataobjet graph with some changes, and a db stored procedure > that should run after this changes are in the db, but must run in the same > transaction because it make some more changes to other data, this changes > can fail so I want the commitChanges fail if the stored procedure fails. > > Atte. Juan Manuel Díaz Lara > > > > > > > > > >
