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 <mkien...@gmail.com> 
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
<jmdia...@yahoo.com.invalid> 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
>
>
>
>

  

Reply via email to