hibernate - javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on event:'prePersist' -


given 2 entities department , employee forming unidirectional one-to-many relationship department employee based on respective tables in database in question follows.

public class department implements serializable {      @id     @generatedvalue(strategy = generationtype.identity)     @basic(optional = false)     @column(name = "department_id", nullable = false)     private long departmentid;      @size(max = 255)     @column(name = "department_name", length = 255)     private string departmentname;      @size(max = 255)     @column(length = 255)     private string location;      @version     @basic(optional = false)     @notnull     @column(name = "row_version", nullable = false)     private long rowversion;      @joincolumn(name = "department_id", referencedcolumnname = "department_id", nullable = false)     @onetomany(fetch = fetchtype.lazy, cascade = cascadetype.all, orphanremoval = true)     private list<employee> employeelist = new arraylist<employee>(0);      private static final long serialversionuid = 1l;      // constructors + getters + setters + hashcode() + equals() + tostring(). } 
public class employee implements serializable {      @id     @generatedvalue(strategy = generationtype.identity)     @basic(optional = false)     @column(name = "employee_id", nullable = false)      private long employeeid;     @size(max = 255)     @column(name = "employee_name", length = 255)     private string employeename;      @version     @basic(optional = false)             @column(name = "row_version", nullable = false)     private long rowversion;      private static final long serialversionuid = 1l;      // constructors + getters + setters + hashcode() + equals() + tostring(). } 

while persisting relationship follows,

department department = new department(); department.setdepartmentname("x"); department.setlocation("x");  employee employee = new employee(); employee.setemployeename("x"); department.getemployeelist().add(employee); entitymanager.persist(department); 

the following exception caused.

severe:   exception while loading app : javax.ejb.createexception: initialization failed singleton singletonentry javax.ejb.createexception: initialization failed singleton singletonentry     @ com.sun.ejb.containers.abstractsingletoncontainer.createsingletonejb(abstractsingletoncontainer.java:476)     @ com.sun.ejb.containers.abstractsingletoncontainer.access$000(abstractsingletoncontainer.java:74)     @ com.sun.ejb.containers.abstractsingletoncontainer$singletoncontextfactory.create(abstractsingletoncontainer.java:647)     @ com.sun.ejb.containers.abstractsingletoncontainer.instantiatesingletoninstance(abstractsingletoncontainer.java:389)     @ org.glassfish.ejb.startup.singletonlifecyclemanager.initializesingleton(singletonlifecyclemanager.java:219)     @ org.glassfish.ejb.startup.singletonlifecyclemanager.initializesingleton(singletonlifecyclemanager.java:180)     @ org.glassfish.ejb.startup.singletonlifecyclemanager.dostartup(singletonlifecyclemanager.java:158)     @ org.glassfish.ejb.startup.ejbapplication.start(ejbapplication.java:166)     @ org.glassfish.internal.data.engineref.start(engineref.java:122)     @ org.glassfish.internal.data.moduleinfo.start(moduleinfo.java:291)     @ org.glassfish.internal.data.applicationinfo.start(applicationinfo.java:352)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:500)     @ com.sun.enterprise.v3.server.applicationlifecycle.deploy(applicationlifecycle.java:219)     @ org.glassfish.deployment.admin.deploycommand.execute(deploycommand.java:491)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$2$1.run(commandrunnerimpl.java:539)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$2$1.run(commandrunnerimpl.java:535)     @ java.security.accesscontroller.doprivileged(native method)     @ javax.security.auth.subject.doas(subject.java:360)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$2.execute(commandrunnerimpl.java:534)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$3.run(commandrunnerimpl.java:565)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$3.run(commandrunnerimpl.java:557)     @ java.security.accesscontroller.doprivileged(native method)     @ javax.security.auth.subject.doas(subject.java:360)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:556)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.docommand(commandrunnerimpl.java:1464)     @ com.sun.enterprise.v3.admin.commandrunnerimpl.access$1300(commandrunnerimpl.java:109)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1846)     @ com.sun.enterprise.v3.admin.commandrunnerimpl$executioncontext.execute(commandrunnerimpl.java:1722)     @ com.sun.enterprise.v3.admin.adminadapter.docommand(adminadapter.java:534)     @ com.sun.enterprise.v3.admin.adminadapter.onmissingresource(adminadapter.java:224)     @ org.glassfish.grizzly.http.server.statichttphandlerbase.service(statichttphandlerbase.java:189)     @ com.sun.enterprise.v3.services.impl.containermapper$httphandlercallable.call(containermapper.java:459)     @ com.sun.enterprise.v3.services.impl.containermapper.service(containermapper.java:167)     @ org.glassfish.grizzly.http.server.httphandler.runservice(httphandler.java:201)     @ org.glassfish.grizzly.http.server.httphandler.dohandle(httphandler.java:175)     @ org.glassfish.grizzly.http.server.httpserverfilter.handleread(httpserverfilter.java:235)     @ org.glassfish.grizzly.filterchain.executorresolver$9.execute(executorresolver.java:119)     @ org.glassfish.grizzly.filterchain.defaultfilterchain.executefilter(defaultfilterchain.java:284)     @ org.glassfish.grizzly.filterchain.defaultfilterchain.executechainpart(defaultfilterchain.java:201)     @ org.glassfish.grizzly.filterchain.defaultfilterchain.execute(defaultfilterchain.java:133)     @ org.glassfish.grizzly.filterchain.defaultfilterchain.process(defaultfilterchain.java:112)     @ org.glassfish.grizzly.processorexecutor.execute(processorexecutor.java:77)     @ org.glassfish.grizzly.nio.transport.tcpniotransport.fireioevent(tcpniotransport.java:561)     @ org.glassfish.grizzly.strategies.abstractiostrategy.fireioevent(abstractiostrategy.java:112)     @ org.glassfish.grizzly.strategies.workerthreadiostrategy.run0(workerthreadiostrategy.java:117)     @ org.glassfish.grizzly.strategies.workerthreadiostrategy.access$100(workerthreadiostrategy.java:56)     @ org.glassfish.grizzly.strategies.workerthreadiostrategy$workerthreadrunnable.run(workerthreadiostrategy.java:137)     @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.dowork(abstractthreadpool.java:565)     @ org.glassfish.grizzly.threadpool.abstractthreadpool$worker.run(abstractthreadpool.java:545)     @ java.lang.thread.run(thread.java:745) caused by: javax.ejb.ejbexception     @ com.sun.ejb.containers.ejbcontainertransactionmanager.processsystemexception(ejbcontainertransactionmanager.java:748)     @ com.sun.ejb.containers.ejbcontainertransactionmanager.completenewtx(ejbcontainertransactionmanager.java:698)     @ com.sun.ejb.containers.ejbcontainertransactionmanager.postinvoketx(ejbcontainertransactionmanager.java:503)     @ com.sun.ejb.containers.basecontainer.postinvoketx(basecontainer.java:4566)     @ com.sun.ejb.containers.basecontainer.postinvoke(basecontainer.java:2074)     @ com.sun.ejb.containers.basecontainer.postinvoke(basecontainer.java:2044)     @ com.sun.ejb.containers.ejblocalobjectinvocationhandler.invoke(ejblocalobjectinvocationhandler.java:220)     @ com.sun.ejb.containers.ejblocalobjectinvocationhandlerdelegate.invoke(ejblocalobjectinvocationhandlerdelegate.java:88)     @ com.sun.proxy.$proxy421.persistunidirectional(unknown source)     @ ejb.__ejb31_generated__employeesessionbean__intf____bean__.persistunidirectional(unknown source)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:483)     @ org.jboss.weld.util.reflection.reflections.invokeandunwrap(reflections.java:414)     @ org.jboss.weld.bean.proxy.enterprisebeanproxymethodhandler.invoke(enterprisebeanproxymethodhandler.java:127)     @ org.jboss.weld.bean.proxy.enterprisetargetbeaninstance.invoke(enterprisetargetbeaninstance.java:56)     @ org.jboss.weld.bean.proxy.injectionpointpropagatingenterprisetargetbeaninstance.invoke(injectionpointpropagatingenterprisetargetbeaninstance.java:65)     @ org.jboss.weld.bean.proxy.proxymethodhandler.invoke(proxymethodhandler.java:100)     @ ejb.employeesessionbean$proxy$_$$_weld$enterpriseproxy$.persistunidirectional(unknown source)     @ ejb.singletonentry.test(singletonentry.java:83)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:483)     @ com.sun.ejb.containers.interceptors.beancallbackinterceptor.intercept(interceptormanager.java:1035)     @ com.sun.ejb.containers.interceptors.callbackchainimpl.invokenext(callbackchainimpl.java:72)     @ com.sun.ejb.containers.interceptors.callbackinvocationcontext.proceed(callbackinvocationcontext.java:205)     @ org.jboss.weld.ejb.abstractejbrequestscopeactivationinterceptor.aroundinvoke(abstractejbrequestscopeactivationinterceptor.java:55)     @ org.jboss.weld.ejb.sessionbeaninterceptor.aroundinvoke(sessionbeaninterceptor.java:52)     @ sun.reflect.generatedmethodaccessor220.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:483)     @ com.sun.ejb.containers.interceptors.callbackinterceptor.intercept(interceptormanager.java:986)     @ com.sun.ejb.containers.interceptors.callbackchainimpl.invokenext(callbackchainimpl.java:72)     @ com.sun.ejb.containers.interceptors.callbackinvocationcontext.proceed(callbackinvocationcontext.java:205)     @ com.sun.ejb.containers.interceptors.systeminterceptorproxy.docall(systeminterceptorproxy.java:163)     @ com.sun.ejb.containers.interceptors.systeminterceptorproxy.init(systeminterceptorproxy.java:125)     @ sun.reflect.generatedmethodaccessor234.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:483)     @ com.sun.ejb.containers.interceptors.callbackinterceptor.intercept(interceptormanager.java:986)     @ com.sun.ejb.containers.interceptors.callbackchainimpl.invokenext(callbackchainimpl.java:72)     @ com.sun.ejb.containers.interceptors.interceptormanager.intercept(interceptormanager.java:412)     @ com.sun.ejb.containers.interceptors.interceptormanager.intercept(interceptormanager.java:375)     @ com.sun.ejb.containers.basecontainer.intercept(basecontainer.java:2014)     @ com.sun.ejb.containers.abstractsingletoncontainer.createsingletonejb(abstractsingletoncontainer.java:468)     ... 49 more caused by: javax.validation.constraintviolationexception: bean validation constraint(s) violated while executing automatic bean validation on callback event:'prepersist'. please refer embedded constraintviolations details.     @ org.eclipse.persistence.internal.jpa.metadata.listeners.beanvalidationlistener.validateoncallbackevent(beanvalidationlistener.java:108)     @ org.eclipse.persistence.internal.jpa.metadata.listeners.beanvalidationlistener.prepersist(beanvalidationlistener.java:77)     @ org.eclipse.persistence.descriptors.descriptoreventmanager.notifylistener(descriptoreventmanager.java:748)     @ org.eclipse.persistence.descriptors.descriptoreventmanager.notifyejb30listeners(descriptoreventmanager.java:691)     @ org.eclipse.persistence.descriptors.descriptoreventmanager.executeevent(descriptoreventmanager.java:229)     @ org.eclipse.persistence.internal.sessions.unitofworkimpl.registernewobjectclone(unitofworkimpl.java:4314)     @ org.eclipse.persistence.internal.sessions.unitofworkimpl.registernotregisterednewobjectforpersist(unitofworkimpl.java:4291)     @ org.eclipse.persistence.internal.sessions.repeatablewriteunitofwork.registernotregisterednewobjectforpersist(repeatablewriteunitofwork.java:521)     @ org.eclipse.persistence.internal.sessions.unitofworkimpl.registernewobjectforpersist(unitofworkimpl.java:4233)     @ org.eclipse.persistence.internal.jpa.entitymanagerimpl.persist(entitymanagerimpl.java:507)     @ com.sun.enterprise.container.common.impl.entitymanagerwrapper.persist(entitymanagerwrapper.java:287)     @ ejb.employeesessionbean.persistunidirectional(employeesessionbean.java:238)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:483)     @ org.glassfish.ejb.security.application.ejbsecuritymanager.runmethod(ejbsecuritymanager.java:1081)     @ org.glassfish.ejb.security.application.ejbsecuritymanager.invoke(ejbsecuritymanager.java:1153)     @ com.sun.ejb.containers.basecontainer.invokebeanmethod(basecontainer.java:4786)     @ com.sun.ejb.ejbinvocation.invokebeanmethod(ejbinvocation.java:656)     @ com.sun.ejb.containers.interceptors.aroundinvokechainimpl.invokenext(interceptormanager.java:822)     @ com.sun.ejb.ejbinvocation.proceed(ejbinvocation.java:608)     @ org.jboss.weld.ejb.abstractejbrequestscopeactivationinterceptor.aroundinvoke(abstractejbrequestscopeactivationinterceptor.java:46)     @ org.jboss.weld.ejb.sessionbeaninterceptor.aroundinvoke(sessionbeaninterceptor.java:52)     @ sun.reflect.generatedmethodaccessor220.invoke(unknown source)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:483)     @ com.sun.ejb.containers.interceptors.aroundinvokeinterceptor.intercept(interceptormanager.java:883)     @ com.sun.ejb.containers.interceptors.aroundinvokechainimpl.invokenext(interceptormanager.java:822)     @ com.sun.ejb.ejbinvocation.proceed(ejbinvocation.java:608)     @ com.sun.ejb.containers.interceptors.systeminterceptorproxy.docall(systeminterceptorproxy.java:163)     @ com.sun.ejb.containers.interceptors.systeminterceptorproxy.aroundinvoke(systeminterceptorproxy.java:140)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43)     @ java.lang.reflect.method.invoke(method.java:483)     @ com.sun.ejb.containers.interceptors.aroundinvokeinterceptor.intercept(interceptormanager.java:883)     @ com.sun.ejb.containers.interceptors.aroundinvokechainimpl.invokenext(interceptormanager.java:822)     @ com.sun.ejb.containers.interceptors.interceptormanager.intercept(interceptormanager.java:369)     @ com.sun.ejb.containers.basecontainer.__intercept(basecontainer.java:4758)     @ com.sun.ejb.containers.basecontainer.intercept(basecontainer.java:4746)     @ com.sun.ejb.containers.ejblocalobjectinvocationhandler.invoke(ejblocalobjectinvocationhandler.java:212)     ... 89 more 

the culprit @notnull constraint in department entity enforced on field rowversion marked @version. if annotation removed, goes fine - persist operation succeeds in entirely.

what role played @notnull constraint in case?

the unidirectional relationship not relevant. exact same thing happens though relationship changed bidirectional one-to-many department employee.

it looks version isn't set until entity modified, therefore rowversion null when entity first created. fails "not null" check. try instead , see if works:

@version @basic(optional = false) @notnull @column(name = "row_version", nullable = false) private long rowversion = 0l; 

what jpa implementation using?


Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -