IdentitySession commit exception
jimknopf Jan 18, 2007 8:44 AMNew Day, new Problem.
Hi again.
I want du add Users to my JBPM-Engine ...
at the beginning it works fine but now, i have a problem i don't realy understand.
At first the code that works fine:
IdentitySession identitySession = new IdentitySession( this.getCurrentSession() ); for (int i = 0; i < entities.length; i++) { identitySession.saveEntity( entities ); } this.newTransaction();
And now the code witch produce a Exception:
for (int i = 0; i < entities.length; i++) { System.err.println("-----------> ... "+ this.getCurrentSession()); IdentitySession identitySession = new IdentitySession( this.getCurrentSession() ); identitySession.saveEntity( entities ); this.newTransaction(); }
The Exception:
Checking 28 named HQL queries Checking 0 named SQL queries -----------> ... SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]]) -----------> ... SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] updates=[] deletions=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]]) org.jbpm.persistence.JbpmPersistenceException: couldn't commit hibernate session at org.jbpm.persistence.db.DbPersistenceService.close(DbPersistenceService.java:172) at org.jbpm.svc.Services.close(Services.java:211) at org.jbpm.JbpmContext.close(JbpmContext.java:139) at medisite.arcaVia.service.ArcaViaController.closeJbpmContext(ArcaViaController.java:559) at medisite.arcaVia.service.ArcaViaController.commitAndCloseSession(ArcaViaController.java:377) at medisite.arcaVia.service.ArcaViaController.newTransaction(ArcaViaController.java:387)
The other methods i called in this block:
private Session getCurrentSession(){ return this.getCurrentJbpmContext().getSession(); } private synchronized void newTransaction() { try { commitAndCloseSession(); beginSessionTransaction(); } catch (Throwable t) { throw new RuntimeException( "couldn't commit and start new transaction", t); } } public synchronized void commitAndCloseSession() { this.closeJbpmContext(); } private void closeJbpmContext() { if( this.getCurrentJbpmContext() != null ){ this.getCurrentJbpmContext().close(); } } public JbpmContext getCurrentJbpmContext(){ return this.getJbpmConfiguration().getCurrentJbpmContext(); } private JbpmConfiguration getJbpmConfiguration() { return jbpmConfiguration; } public synchronized void beginSessionTransaction() { if( this.getCurrentJbpmContext() == null ){ createJbpmContext(); } } private void createJbpmContext() { getJbpmConfiguration().createJbpmContext(); } private static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
The reason i wan't to make a commit after every User is,
that i want to have a method to add Users like this:
private void addEntity( Entity e ){ if( e == null ) return; if( this.getCurrentJbpmContext() == null ) this.beginSessionTransaction(); IdentitySession identitySession = this.getIdentitySession(); identitySession.saveEntity( e ); this.newTransaction(); }
Any body an idea why i get the exception?
Thank for ur help.