2010-11-01 13 views
13

का कारण क्या होगा, मुझे यह त्रुटि मिलती है, भले ही मेरे मॉडल वर्ग में कोई सत्यापन बाधा न हो (सभी सदस्य चर ठीक से सेट होते हैं लेकिन मैं ऑब्जेक्ट सृजन पर यह अपवाद प्राप्त करता हूं)। मैं इस त्रुटि को कैसे डीबग करूं?एक हाइबरनेट अमान्यस्टेट एक्सेप्शन

javax.el.ELException: org.hibernate.validator.InvalidStateException: valida 
tion failed for: com.mycompany.model.User 
     at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.jav 
a:339) 
     at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.jav 
a:280) 
     at org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.jav 
a:59) 
     at org.jboss.el.parser.AstMethodSuffix.invoke(AstMethodSuffix.java: 
65) 
     at org.jboss.el.parser.AstValue.invoke(AstValue.java:96) 
     at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.ja 
va:276) 
     at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:175) 
     at org.jboss.seam.navigation.Pages.callAction(Pages.java:703) 
     at org.jboss.seam.navigation.Pages.preRender(Pages.java:331) 
     at org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseList 
ener.java:561) 
     at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPh 
aseListener.java:472) 
     at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhas 
eListener.java:148) 
     at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListen 
er.java:118) 
     at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:214) 
     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:96) 
     at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java: 
139) 
     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(Applica 
tionFilterChain.java:206) 
     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:83) 
     at org.jboss.seam.web.RewriteFilter.doFilter(RewriteFilter.java:63) 

     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:4 
0) 
     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java 
:90) 
     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java 
:64) 
     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:4 
5) 
     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEnc 
odingFilter.java:42) 
     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java 
:206) 
     at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290 
) 
     at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(Ba 
seFilter.java:388) 
     at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) 
     at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:5 
6) 
     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) 

     at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamF 
ilter.java:69) 
     at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(Applica 
tionFilterChain.java:206) 
     at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHea 
derFilter.java:96) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(Applica 
tionFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWra 
pperValve.java:235) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardCon 
textValve.java:191) 
     at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Se 
curityAssociationValve.java:190) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authe 
nticatorBase.java:433) 
     at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContex 
tValve.java:92) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve. 
process(SecurityContextEstablishmentValve.java:126) 
     at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve. 
invoke(SecurityContextEstablishmentValve.java:70) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostVa 
lve.java:127) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportVa 
lve.java:102) 
     at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(Ca 
chedConnectionValve.java:158) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngi 
neValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapte 
r.java:330) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor 
.java:829) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler. 
process(Http11Protocol.java:598) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.ja 
va:447) 
     at java.lang.Thread.run(Thread.java:619) 
Caused by: org.hibernate.validator.InvalidStateException: validation failed 
for: com.mycompany.model.User   at org.hibernate.validator.event.ValidateEventListener.validate(Val 
idateEventListener.java:148) 
     at org.hibernate.validator.event.ValidateEventListener.onPreInsert(
ValidateEventListener.java:172) 
     at org.hibernate.action.EntityIdentityInsertAction.preInsert(Entity 
IdentityInsertAction.java:142) 
     at org.hibernate.action.EntityIdentityInsertAction.execute(EntityId 
entityInsertAction.java:65) 
     at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) 
     at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrR 
eplicate(AbstractSaveEventListener.java:321) 
     at org.hibernate.event.def.AbstractSaveEventListener.performSave(Ab 
stractSaveEventListener.java:204) 
     at org.hibernate.event.def.AbstractSaveEventListener.saveWithGenera 
tedId(AbstractSaveEventListener.java:130) 
     at org.hibernate.ejb.event.EJB3PersistEventListener.saveWithGenerat 
edId(EJB3PersistEventListener.java:49) 
     at org.hibernate.event.def.DefaultPersistEventListener.entityIsTran 
sient(DefaultPersistEventListener.java:154) 
     at org.hibernate.event.def.DefaultPersistEventListener.onPersist(De 
faultPersistEventListener.java:110) 
     at org.hibernate.event.def.DefaultPersistEventListener.onPersist(De 
faultPersistEventListener.java:61) 
     at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645) 

     at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619) 
     at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623) 
     at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEnti 
tyManagerImpl.java:220) 
     at sun.reflect.GeneratedMethodAccessor454.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethod 
AccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.jboss.seam.persistence.EntityManagerInvocationHandler.invoke 
(EntityManagerInvocationHandler.java:46) 
     at $Proxy550.persist(Unknown Source) 
     at org.jboss.seam.framework.EntityHome.persist(EntityHome.java:84) 
     at com.mycompany.action.UserHome.persist(
+1

दिखा उपयोगकर्ता इकाई मदद कर सकता है। –

उत्तर

22

प्रत्येक InvalidStateException एक सरणी हूँ InvalidValue का। प्रत्येक InvalidValue दिखाता है कि बीन की कौन सी संपत्ति आप जारी रखना चाहते हैं। जैसा कि @ आर्थर ने सही ढंग से बताया, जावा दृढ़ता एनोटेशन का उल्लंघन InvalidStateException एस में भी समाप्त होता है।

आपकी समस्या को डिबग करने के लिए, मैं अस्थायी रूप से com.mycompany.action.UserHome.persist में InvalidStateException पकड़ने और प्रत्येक InvalidValue प्रिंट आउट के रूप में निम्नानुसार हैं:

} catch (InvalidStateException e) { 
    for (InvalidValue invalidValue : e.getInvalidValues()) { 
     log.info("Instance of bean class: " + invalidValue.getBeanClass().getSimpleName() + 
       " has an invalid property: " + invalidValue.getPropertyName() + 
       " with message: " + invalidValue.getMessage())); 
    } 
} 
+0

पर एक पुस्तक लिखनी चाहिए, यह कोशिश करें – Sam

+0

धन्यवाद, इससे मुझे त्रुटि खोजने में मदद मिली (एक छोटा चर एक त्रुटि स्थिति में एक स्ट्रिंग मान सेट किया जा रहा था)। बहुत बहुत धन्यवाद – Sam

1

आप आसानी से इस डिबग करने के लिए चाहते हैं, आप उत्पन्न कर सकते हैं/एक toString() विधि को लागू करना तथा वस्तु इससे पहले कि आप निस्तब्धता रहे हैं मुद्रित करें।

इस तरह आप देख सकते हैं कि आपकी कुछ संपत्तियां अनुपलब्ध हैं या आपके पास कुछ सत्यापन त्रुटियां हैं।

+0

मैंने ऑब्जेक्ट प्रिंट किया था, यह ठीक है कि सभी सदस्यों के साथ ठीक से सेट किया गया है। – Sam

+0

फिर कृपया हमें उपयोगकर्ता इकाई दिखाएं, और ऑब्जेक्ट का प्रिंटआउट –

3

मैं बहुत यकीन है कि यह एक श्रोता डिफ़ॉल्ट रूप से पंजीकृत

at org.hibernate...ValidateEventListener.onPreInsert(ValidateEventListener.java) 
at org.hibernate...EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java) 

बस hibernate.validator.autoregister_listeners की स्थापना के कारण होता है संपत्ति के रूप में झूठी

hibernate.validator.autoregister_listeners=false 
+0

हां, (हाइबरनेट) सत्यापनकर्ता श्रोता के रूप में पंजीकृत है। लेकिन यह किसी भी सत्यापन बाधा के बिना एक इकाई को क्यों खारिज कर देगा? –

+0

@ पास्कल थिवेन्ट हाय पास्कल, यहां तक ​​कि जब आप सादा हाइबरनेट वैलिडेटर एनोटेशन का उपयोग नहीं करते हैं, तो यह आपके इकाई को मान्य कर सकता है यदि आपके पास * @ कॉलम (लंबाई = 10) * जैसा कुछ है, उदाहरण के लिए। आप * session.persist (yourEntity) * –

+0

अहह का उपयोग करके इसे आजमा सकते हैं, बहुत अच्छा बिंदु! –

संबंधित मुद्दे