2010-12-17 9 views
0

synchronisiert werden Ich habe eine Webanwendung entwickelt auf Frühling und Hibernate 3.0 und auf Apache Tomcat 6 bereitgestellt. Ich bekomme unter Fehler, wenn ich versuche, die Daten in die eine der Tabelle einzufügen (Tabelle 'CAR_ATTRIBUTE')Ausnahme: Der Datenbankstatus konnte nicht mit Sitzung

[CAR] [2010-12-12 13:41:30,651] ERROR [http-80-2] AbstractFlushingEventListener.performExecutions(301) | Could not synchronize database state with session 
org.hibernate.exception.ConstraintViolationException: could not insert: [com.test.model.CarAttribute] 
     at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) 
     at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) 
     at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2267) 
     at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660) 
     at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56) 
     at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250) 
     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234) 
     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141) 
     at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
     at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
     at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141) 
     at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298) 
     at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) 
     at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) 
     at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) 
     at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) 
     at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:558) 
     at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:662) 
     at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:632) 
     at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:319) 
     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
     at $Proxy31.resyncAttributes(Unknown Source) 
     ... 
     at org.springframework.web.servlet.mvc.SimpleFormController.processFormSubmission(SimpleFormController.java:267) 
     at com.belk.car.app.webapp.controller.BaseFormController.processFormSubmission(BaseFormController.java:169) 
     at com.belk.car.app.webapp.controller.DashBoardFormController.processFormSubmission(DashBoardFormController.java:176) 
     at org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:265) 
     at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) 
     at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476) 
     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654) 
     at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445) 
     at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:343) 
     at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292) 
     at org.appfuse.webapp.filter.StaticFilter.doFilterInternal(StaticFilter.java:102) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118) 
     at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:164) 
     at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:141) 
     at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:90) 
     at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:406) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.appfuse.webapp.filter.LocaleFilter.doFilterInternal(LocaleFilter.java:74) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265) 
     at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) 
     at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 
     at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 
     at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 
     at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 
     at org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:81) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 
     at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 
     at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 
     at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) 
     at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149) 
     at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263) 
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584) 
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) 
     at java.lang.Thread.run(Thread.java:735) 
Caused by: 
java.sql.BatchUpdateException: ORA-00001: unique constraint (CARS.XAK1CAR_ATTRIBUTE) violated 

     at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:602) 
     at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9350) 
     at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:210) 
     at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297) 
     at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48) 
     at org.hibernate.jdbc.BatchingBatcher.addToBatch(BatchingBatcher.java:34) 
     at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2247) 
     ... 96 more 

Dieser Fehler kann nur in der Produktionsumgebung reproduziert werden. Derselbe Code arbeitet an meiner lokalen Umgebung, die auf dieselbe DB verweist. Ich habe versucht, Logger-Anweisung hinzuzufügen und festgestellt, dass Sequenzgenerator den gleichen Wert erzeugt, d. H. "0" jedes Mal. Warten auf Ihre Hilfe.

- Sun2


für die Antwort Danke. Ja, Exception sagt eindeutig, dass es die Beschränkungen verletzt. CARS.XAK1CAR_ATTRIBUTE ist ein kombinierter Schlüssel und sollte eindeutig sein. Ich habe alle Daten überprüft (durch Logger) und konnte keine Daten finden, die diese Einschränkungen verletzen könnten. Außerdem, wenn es gegen diese Einschränkungen verstößt, sollte es nicht funktionieren, wenn meine lokale Umgebung auf dieselbe Datenbank verweist. Kann dies serverspezifisch sein? Ich kann mehr Details wie Tabelle DDL und Daten zur Verfügung stellen, die ich einfügen möchte, wenn es helfen kann, das Problem zu lösen. --Santosh

Antwort

2

ohne mehr zu wissen, was konkret tun Sie auf diesem speichern, alles, was ich sagen kann, ist, dass die Antwort in dem Stack-Trace ist

unique constraint (CARS.XAK1CAR_ATTRIBUTE) violated 

Sie irgendeine Art von Einschränkung verletzen. Vielleicht sparen Sie, wenn Sie aktualisieren wollen?

+0

Danke für die Antwort. Ja, Exception sagt eindeutig, dass es die Beschränkungen verletzt. CARS.XAK1CAR_ATTRIBUTE ist ein kombinierter Schlüssel und sollte eindeutig sein. Ich habe alle Daten überprüft (durch Logger) und konnte keine Daten finden, die diese Einschränkungen verletzen könnten. Außerdem, wenn es gegen diese Einschränkungen verstößt, sollte es nicht funktionieren, wenn meine lokale Umgebung auf dieselbe Datenbank verweist. – sun2

+0

@ sun2, haben Sie die gleichen Daten in Ihrer Entwicklungsumgebung wie die Produktion? Sind Sie in einem Debugger durch den Code gegangen? – hvgotcodes

+0

Ja .. Ich habe die gleichen Daten über meine Entwicklungsumgebung wie die Produktion. Außerdem habe ich es sogar mit Produktions-DB versucht. Ich habe dieselben Fehler. – sun2

2

Dies scheint ein Problem mit Ruhezustand-Cache zu sein .... in einem einzigen Cache-Flush können Sie nicht zweimal ein Objekt aktualisieren, das eine Auflistung enthält. versuche, eine session.flush() am ende deines codes hinzuzufügen ...