Hibernate

tondayong1981 2008-11-28 09:19:35
有两张表,customTable.xml 和series两张表,主建分别为custom_table_id和series_id,中间表为customSeriesMapping,有id(自然主键)custom_table_id,series_id 和forecast_category_id都是其他表的外间,在表的级联更新和删除的时候都出现以下的错误。请帮忙看下.
CustomTable.hbm.xml<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Sep 19, 2008 5:32:15 PM by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="com.risi.eap.model.CustomTable" table="eap_custom_table">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="identity" />
</id>


<set name="customTableSeries" inverse="false" table="eap_custom_table_series" cascade="all" lazy="false">
<key>
<column name="custom_table_id"/>
</key>
<one-to-many class="com.risi.eap.model.CustomTableSeriesMapping"/>
</set>
</class>

</hibernate-mapping>


CustomTableSeriesMapping.hxm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Sep 19, 2008 5:32:15 PM by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="com.risi.eap.model.CustomTableSeriesMapping" table="eap_custom_table_series">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="customTable" class="com.risi.eap.model.CustomTable">
<column name="custom_table_id" />
</many-to-one>
<many-to-one name="series" class="com.risi.eap.model.Series">
<column name="series_id" />
</many-to-one>
<many-to-one name="forecastCategory" class="com.risi.eap.model.ForecastCategory">
<column name="forecast_category_id" />
</many-to-one>
</class>
</hibernate-mapping>

series.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Oct 5, 2008 11:56:39 AM by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
<class name="com.risi.eap.model.Series" table="eap_series">
<id name="id" type="java.lang.Long">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="seriesUnit" class="com.risi.eap.model.SeriesUnit" fetch="select">
<column name="unit_id" />
</many-to-one>
<many-to-one name="seriesGrade" class="com.risi.eap.model.SeriesGrade" fetch="select">
<column name="grade_id" />
</many-to-one>
<many-to-one name="seriesFrequency" class="com.risi.eap.model.SeriesFrequency" fetch="select">
<column name="frequency_id" />
</many-to-one>
<many-to-one name="seriesConcept" class="com.risi.eap.model.SeriesConcept" fetch="select">
<column name="main_concept_id" />
</many-to-one>
<many-to-one name="seriesSubconcept" class="com.risi.eap.model.SeriesSubconcept" fetch="select">
<column name="subconcept_id" />
</many-to-one>
<property name="epsMneumonic" type="string">
<column name="eps_mneumonic" length="100" not-null="true" />
</property>
<property name="mnemonic" type="string">
<column name="mnemonic" length="100" not-null="true" />
</property>
<property name="shortName" type="string">
<column name="short_name" />
</property>
<property name="longName" type="string">
<column name="long_name" />
</property>
<property name="seriesRegion" type="string">
<column name="series_region" />
</property>
<property name="grade2" type="string">
<column name="grade2" />
</property>
<property name="grade3" type="string">
<column name="grade3" />
</property>
<property name="keyword" type="string">
<column name="keyword" />
</property>
<property name="concept" type="string">
<column name="concept" />
</property>
<property name="tradeTo" type="string">
<column name="trade_to" />
</property>
<property name="tradeFrom" type="string">
<column name="trade_from" />
</property>
<property name="seasonalChange" type="java.lang.Byte">
<column name="seasonal_change" />
</property>
<set name="snapshots" inverse="true">
<key>
<column name="series_id" not-null="true" />
</key>
<one-to-many class="com.risi.eap.model.Snapshot" />
</set>
<set name="seriesSubconcepts" inverse="false" table="eap_series_series_subconcept">
<key>
<column name="series_id" not-null="true" />
</key>
<many-to-many entity-name="com.risi.eap.model.SeriesSubconcept">
<column name="subconcept_id" not-null="true" />
</many-to-many>
</set>
<set name="chartSubSerieses" inverse="true">
<key>
<column name="series_id" not-null="true" />
</key>
<one-to-many class="com.risi.eap.model.ChartSubSeries" />
</set>
<set name="customTableSeries" inverse="false" table="eap_custom_table_series">
<key>
<column name="series_id" not-null="true" />
</key>
<one-to-many entity-name="com.risi.eap.model.CustomTableSeriesMapping"/>
</set>
<set name="chartSerieses" inverse="true">
<key>
<column name="series_id" not-null="true" />
</key>
<one-to-many class="com.risi.eap.model.ChartSeries" />
</set>
<set name="seriesConcepts" inverse="false" table="eap_series_series_concept">
<key>
<column name="series_id" not-null="true" />
</key>
<many-to-many entity-name="com.risi.eap.model.SeriesConcept">
<column name="concept_id" not-null="true" />
</many-to-many>
</set>
<set name="seriesGroupSerieses" inverse="true">
<key>
<column name="series_id" not-null="true" />
</key>
<one-to-many class="com.risi.eap.model.SeriesGroupSeries" />
</set>
</class>
</hibernate-mapping>
...全文
150 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tondayong1981 2008-11-30
  • 打赏
  • 举报
回复
原来是一个inverse="true" 的原因,搞了两天了。
tondayong1981 2008-11-30
  • 打赏
  • 举报
回复
谢谢大家,看来还得多看书啊,不能一个劲的做项目啊
西瓜 2008-11-29
  • 打赏
  • 举报
回复
表的主控权问题!
把 inverse="true" 试试!
<set name="customTableSeries" inverse="true" table="eap_custom_table_series" cascade="all" lazy="false">

还有就是延迟加载的问题!
加上 lazy="false" 试试!
<many-to-one name="customTable" class="com.risi.eap.model.CustomTable" lazy="false">

eagle_2008 2008-11-29
  • 打赏
  • 举报
回复
顶4楼
上善_若水 2008-11-29
  • 打赏
  • 举报
回复
你的插入的表中外联表没有数据,加个级联关系。
DiscussQuestions 2008-11-28
  • 打赏
  • 举报
回复
SEVERE: Could not synchronize database state with session
你的数据不能同步!~!
message from server: "Cannot add or update a child row: a foreign key constraint fails"
你的表的关系比较多,你在你的表的相应的关系上边配置一个级联会比较好,cascode="save-update"!~
tondayong1981 2008-11-28
  • 打赏
  • 举报
回复
Caused by: java.sql.BatchUpdateException: null, message from server: "Cannot add or update a child row: a foreign key constraint fails"
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1404)
at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
... 62 more
org.springframework.dao.DataIntegrityViolationException: Hibernate operation: Could not execute JDBC batch update; SQL [update eap_custom_table_series set custom_table_id=null where custom_table_id=?]; null, message from server: "Cannot add or update a child row: a foreign key constraint fails"; nested exception is java.sql.BatchUpdateException: null, message from server: "Cannot add or update a child row: a foreign key constraint fails"
java.sql.BatchUpdateException: null, message from server: "Cannot add or update a child row: a foreign key constraint fails"
at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1404)
at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:297)
at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:58)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:195)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:266)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy22.deleteCustomTableById(Unknown Source)
at com.risi.eap.controller.MyTablesController.perform(MyTablesController.java:93)
at com.risi.eap.controller.EAPortalBaseController.handleGatewayRequest(EAPortalBaseController.java:121)
at com.risi.portal.controller.BaseController.handleRequestInternal(BaseController.java:341)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:358)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:292)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:79)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:143)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:138)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:174)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:220)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:120)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.risi.filter.ErrorFilter.doFilter(ErrorFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.risi.filter.ModifyHTMLResponseFilter.doFilter(ModifyHTMLResponseFilter.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
tondayong1981 2008-11-28
  • 打赏
  • 举报
回复
WARNING: SQL Error: 1216, SQLState: 23000
Nov 28, 2008 9:01:50 PM org.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: null, message from server: "Cannot add or update a child row: a foreign key constraint fails"
Nov 28, 2008 9:01:50 PM org.hibernate.event.def.AbstractFlushingEventListener performExecutions
SEVERE: Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:202)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)
at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:333)
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:584)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:500)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:473)
at org.springframework.transaction.interceptor.TransactionAspectSupport.doCommitTransactionAfterReturning(TransactionAspectSupport.java:266)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:170)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:176)
at $Proxy22.deleteCustomTableById(Unknown Source)
at com.risi.eap.controller.MyTablesController.perform(MyTablesController.java:93)
at com.risi.eap.controller.EAPortalBaseController.handleGatewayRequest(EAPortalBaseController.java:121)
at com.risi.portal.controller.BaseController.handleRequestInternal(BaseController.java:341)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:723)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:663)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:394)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:358)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:292)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:79)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:143)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:138)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:174)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:220)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:303)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:120)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.risi.filter.ErrorFilter.doFilter(ErrorFilter.java:45)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.risi.filter.ModifyHTMLResponseFilter.doFilter(ModifyHTMLResponseFilter.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧