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
>
>
>
>