Re: Cayenne callback listener in single transaction

2019-12-27 Thread Andrus Adamchik
Hi Artem,

> In fact I am interested in second scenario. 

> 
> 1. open transaction
> 2. perform main sql INSERT (db assign PK for new record)
> 3. perform callback operation (newly generated PK is accessible )
> 4. close transaction

Sure. Here is how to do it with CommitLogModule:

  ServerRuntime.builder()
  
.addModule(CommitLogModule.extend().addListener(MyCommitLogListener.class).module())

  public class MyCommitLogListener implements CommitLogListener {
  public void onPostCommit(ObjectContext originatingContext, ChangeMap 
changes) {
 // Here put the code for step #3. 
 // ChangeMap should have all the info on changed objects...
  }
  }


> On Dec 27, 2019, at 12:23 PM, Artem Kravchenko  
> wrote:
> 
> Hello Andrus
> Thanks for your replay.
> 
> Not sure how it works butfor example:
> I need to insert some Entity and on @PostPersist get the PK of this record.
> So the question is:
> 
> will 'insertBefore' collect all changes (main commit and callback) first and 
> then apply bulk SQL (inserts/updates)
> 
> or
> 
> 1. open transaction
> 2. perform main sql INSERT (db assign PK for new record)
> 3. perform callback operation (newly generated PK is accessible )
> 4. close transaction
> 
> In fact I am interested in second scenario
> first one doesn't fit for us
> 



Re: Cayenne callback listener in single transaction

2019-12-27 Thread Artem Kravchenko

Hello Andrus
Thanks for your replay.

Not sure how it works butfor example:
I need to insert some Entity and on @PostPersist get the PK of this record.
So the question is:

will 'insertBefore' collect all changes (main commit and callback) first 
and then apply bulk SQL (inserts/updates)


or

1. open transaction
2. perform main sql INSERT (db assign PK for new record)
3. perform callback operation (newly generated PK is accessible )
4. close transaction

In fact I am interested in second scenario
first one doesn't fit for us