hibernate - Envers RevisionEntity can not be saved with Metadata -


i have application written in play framework hibernate. want add versioning envers library.

i have user class.

@entity @audited(withmodifiedflag=true) public class user  

a controller change things user.

@transactional public static result updateaccountstates(long userid) {     user user = jpa.em().find(user.class, userid);     integer prevstatus = user.status;     form<accountstateform> form = form.form(accountstateform.class).bindfromrequest();     form.get().applyto(user);     return redirect(routes.customers.account(userid)); } 

i want add metadata changed users data.

@entity @revisionentity(userrevisionlistener.class) public class userrevisionentity extends defaultrevisionentity {     @manytoone     public staff staff; }  public class userrevisionlistener implements revisionlistener {     @override     public void newrevision(object revisionentity) {          userrevisionentity userentity = (userrevisionentity) revisionentity;         userentity = securityutils.getstaff(ctx());     } } 

every time user changes record witch staff member changed it.

i have added userrevisionentity model persistence.xml:

<class>models.userrevisionentity</class> 

when change user status get:

[error] o.h.e.j.s.sqlexceptionhelper - cannot add or update child row: foreign key constraint fails (`creditgate24`.`user_aud`, constraint `fk_97pph94d4cb7qah5aygmmll2y` foreign key (`rev`) references `revinfo` (`rev`)) [error] play - cannot invoke action, got error: java.lang.runtimeexception: javax.persistence.rollbackexception: error while committing transaction [error] application -   ! @6mjac6klf - internal server error, (post) [/customers/9/account?csrftoken=fe225b185b9c5ee9f48d58180d0885ca7118d7fd-1435656024963-c42071a398c0e4c84c7682d0] ->  play.api.application$$anon$1: execution exception[[runtimeexception: javax.persistence.rollbackexception: error while committing transaction]]     @ play.api.application$class.handleerror(application.scala:296) ~[play_2.11-2.3.7.jar:2.3.7]     @ play.api.defaultapplication.handleerror(application.scala:402) [play_2.11-2.3.7.jar:2.3.7]     @ play.core.server.netty.playdefaultupstreamhandler$$anonfun$3$$anonfun$applyorelse$4.apply(playdefaultupstreamhandler.scala:320) [play_2.11-2.3.7.jar:2.3.7]     @ play.core.server.netty.playdefaultupstreamhandler$$anonfun$3$$anonfun$applyorelse$4.apply(playdefaultupstreamhandler.scala:320) [play_2.11-2.3.7.jar:2.3.7]     @ scala.option.map(option.scala:145) [scala-library-2.11.4.jar:na] caused by: java.lang.runtimeexception: javax.persistence.rollbackexception: error while committing transaction     @ play.db.jpa.jpa.withtransaction(jpa.java:111) ~[play-java-jpa_2.11-2.3.7.jar:2.3.7]     @ controllers.admin.customers.updateaccountstates(customers.java:86) ~[classes/:na]     @ admin.routes$$anonfun$routes$1$$anonfun$applyorelse$21$$anonfun$apply$21.apply(routes_routing.scala:952) ~[classes/:na]     @ admin.routes$$anonfun$routes$1$$anonfun$applyorelse$21$$anonfun$apply$21.apply(routes_routing.scala:952) ~[classes/:na]     @ play.core.router$handlerinvokerfactory$$anon$4.resultcall(router.scala:264) ~[play_2.11-2.3.7.jar:2.3.7] caused by: javax.persistence.rollbackexception: error while committing transaction     @ org.hibernate.jpa.internal.transactionimpl.commit(transactionimpl.java:94) ~[hibernate-entitymanager-4.3.10.final.jar:4.3.10.final]     @ play.db.jpa.jpa.withtransaction(jpa.java:141) ~[play-java-jpa_2.11-2.3.7.jar:2.3.7]     @ play.db.jpa.jpa.withtransaction(jpa.java:104) ~[play-java-jpa_2.11-2.3.7.jar:2.3.7]     @ controllers.admin.customers.updateaccountstates(customers.java:86) ~[classes/:na]     @ admin.routes$$anonfun$routes$1$$anonfun$applyorelse$21$$anonfun$apply$21.apply(routes_routing.scala:952) ~[classes/:na] caused by: javax.persistence.persistenceexception: org.hibernate.exception.constraintviolationexception: not execute statement     @ org.hibernate.jpa.spi.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1763) ~[hibernate-entitymanager-4.3.10.final.jar:4.3.10.final]     @ org.hibernate.jpa.spi.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1677) ~[hibernate-entitymanager-4.3.10.final.jar:4.3.10.final]     @ org.hibernate.jpa.internal.transactionimpl.commit(transactionimpl.java:82) ~[hibernate-entitymanager-4.3.10.final.jar:4.3.10.final]     @ play.db.jpa.jpa.withtransaction(jpa.java:141) ~[play-java-jpa_2.11-2.3.7.jar:2.3.7]     @ play.db.jpa.jpa.withtransaction(jpa.java:104) ~[play-java-jpa_2.11-2.3.7.jar:2.3.7] caused by: org.hibernate.exception.constraintviolationexception: not execute statement     @ org.hibernate.exception.internal.sqlexceptiontypedelegate.convert(sqlexceptiontypedelegate.java:72) ~[hibernate-core-4.3.10.final.jar:4.3.10.final]     @ org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconverter.java:49) ~[hibernate-core-4.3.10.final.jar:4.3.10.final]     @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:126) ~[hibernate-core-4.3.10.final.jar:4.3.10.final]     @ org.hibernate.engine.jdbc.spi.sqlexceptionhelper.convert(sqlexceptionhelper.java:112) ~[hibernate-core-4.3.10.final.jar:4.3.10.final]     @ org.hibernate.engine.jdbc.internal.resultsetreturnimpl.executeupdate(resultsetreturnimpl.java:211) ~[hibernate-core-4.3.10.final.jar:4.3.10.final] caused by: com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityconstraintviolationexception: cannot add or update child row: foreign key constraint fails (`cg`.`user_aud`, constraint `fk_97pph94d4cb7qah5aygmmll2y` foreign key (`rev`) references `revinfo` (`rev`))     @ sun.reflect.nativeconstructoraccessorimpl.newinstance0(native method) ~[na:1.7.0_71]     @ sun.reflect.nativeconstructoraccessorimpl.newinstance(nativeconstructoraccessorimpl.java:57) ~[na:1.7.0_71]     @ sun.reflect.delegatingconstructoraccessorimpl.newinstance(delegatingconstructoraccessorimpl.java:45) ~[na:1.7.0_71]     @ java.lang.reflect.constructor.newinstance(constructor.java:526) ~[na:1.7.0_71]     @ com.mysql.jdbc.util.handlenewinstance(util.java:377) ~[mysql-connector-java-5.1.34.jar:5.1.34] 

it seams because the rev entry not created correctly not able create user revision.

i don't understand why is. seams happen when 'newrevision' throws exception, put should not.

thanks help!


Comments

Popular posts from this blog

how to do line continuation in perl debugger for entering raw multi-line text (EOT)? -

javascript - Create websocket without connecting -

sharepoint - Accessing files across a shared directory using a Windows service -