出错信息:Hibernate: select seq_resumeid.nextval from dual
Hibernate: insert into CYBERHR.RESUME (OTHER, LANG, ACCOUNTID, RESUMEID) values (?, ?, ?, ?)
Hibernate: insert into CYBERHR.RESUMEBASICINFO (NAMEPART1, NAMEPART2, SEX, BIRTHDATE, IDNUMBER, EMAIL, XUELI, SALARYPERYEAR, WORKYEAR, LIVINGCITY, HUKOU, MARRIAGESTATUS, TELEPHONEHOME, MOBILE, PAGER, FAX, ADDRESS, POSTCODE, HOMEPAGE, VACANCYID, RESUMEID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
40358 [http8080-Processor24] WARN net.sf.hibernate.util.JDBCExceptionReporter  - SQL Error: 2291, SQLState: 23000
40369 [http8080-Processor24] ERROR net.sf.hibernate.util.JDBCExceptionReporter  - ORA-02291: 违反完整约束条件 (CYBERHR.RESUMEBASICIN_FK51110442457883) - 未找到父项关键字40369 [http8080-Processor24] WARN net.sf.hibernate.util.JDBCExceptionReporter  - SQL Error: 2291, SQLState: 23000
40379 [http8080-Processor24] ERROR net.sf.hibernate.util.JDBCExceptionReporter  - ORA-02291: 违反完整约束条件 (CYBERHR.RESUMEBASICIN_FK51110442457883) - 未找到父项关键字40429 [http8080-Processor24] WARN net.sf.hibernate.util.JDBCExceptionReporter  - SQL Error: 2291, SQLState: 23000
40449 [http8080-Processor24] ERROR net.sf.hibernate.util.JDBCExceptionReporter  - ORA-02291: 违反完整约束条件 (CYBERHR.RESUMEBASICIN_FK51110442457883) - 未找到父项关键字40449 [http8080-Processor24] WARN net.sf.hibernate.util.JDBCExceptionReporter  - SQL Error: 2291, SQLState: 23000
40459 [http8080-Processor24] ERROR net.sf.hibernate.util.JDBCExceptionReporter  - ORA-02291: 违反完整约束条件 (CYBERHR.RESUMEBASICIN_FK51110442457883) - 未找到父项关键字40519 [http8080-Processor24] ERROR net.sf.hibernate.util.JDBCExceptionReporter  - Could not execute JDBC batch update
java.sql.BatchUpdateException: ORA-02291: 违反完整约束条件 (CYBERHR.RESUMEBASICIN_FK51110442457883) - 未找到父项关键字 at oracle.jdbc.dbaccess.DBError.throwBatchUpdateException(DBError.java:458)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:3907)
at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:54)
at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:126)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2421)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2371)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2240)
at com.cyber.cyberhr.resume.AddBasicinfoAction.doAddBasicinfo(AddBasicinfoAction.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.cyber.base.struts.BaseAction.process(BaseAction.java:87)
at com.cyber.base.struts.BaseAction.execute(BaseAction.java:50)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
at org.apache.catalina.core.StandardValveContext.invokeNext

解决方案 »

  1.   

    (StandardValveContext.java:151)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
    at java.lang.Thread.run(Thread.java:534)
    40569 [http8080-Processor24] ERROR net.sf.hibernate.impl.SessionImpl  - Could not synchronize database state with session
    net.sf.hibernate.JDBCException: Could not execute JDBC batch update
    at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:133)
    at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2421)
    at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2371)
    at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2240)
    at com.cyber.cyberhr.resume.AddBasicinfoAction.doAddBasicinfo(AddBasicinfoAction.java:112)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at com.cyber.base.struts.BaseAction.process(BaseAction.java:87)
    at com.cyber.base.struts.BaseAction.execute(BaseAction.java:50)
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:284)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:204)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:257)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:245)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:199)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:184)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:164)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:149)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:156)
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:151)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:567)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:972)
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:206)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:833)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:732)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:619)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:688)
    at java.lang.Thread.run(Thread.java:534)
    Caused by: java.sql.BatchUpdateException: ORA-02291: 违反完整约束条件 (CYBERHR.RESUMEBASICIN_FK51110442457883) - 未找到父项关键字 at oracle.jdbc.dbaccess.DBError.throwBatchUpdateException(DBError.java:458)
    at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:3907)
    at org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.java:294)
    at net.sf.hibernate.impl.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:54)
    at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:126)
    ... 40 more
    40639 [http8080-Processor24] ERROR com.cyber.cyberhr.resume.AddBasicinfoAction  - Could not execute JDBC batch update================================================================================是不是我的hbm.xml配置有问题,请各位指教,谢谢!
      

  2.   

    似乎应该在resumebasicinfo中指定inverse=false
      

  3.   

    当然是hbm.xml有问题了,他们表之间的关联是靠关键字段的,你都没有给出关联的关键字段!!
      

  4.   

    constrained="true"告訴Hibernate參考至resume表的主鍵
    你在resumebasicinfo.hbm.xml里
        <one-to-one
            name="resume"
            class="com.cyber.cyberhr.model.Resume"
    constrained="true"
        />
    resume是不是跟resume表里的主键没什么关系所以导致"未找到父项关键字"错误
      

  5.   

    谢谢大伙捧场:)To: usherlight(xingtian)
      我查过了,好像在one-to-one关系中没有inverse的属性。To: fengyun1314(追梦) 
      我已经在数据库中定义了resume和resumeinfo间的关联关系,resumeinfo中的主键字段resumeid是通过外键引用resume中的主键字段resumeid的,关联映射默认的应该是以主键字段关联的吧
      如果用单项关联的话,我就不能通过resumeinfo得到resume的信息了,能用双向关联实现吗To: wangw1319(于风) 
      one-to-one里的name属性指的是对应的表的名称,应该不是这里的问题。建立映射时默认的是采用主键进行关联。==================================================
    大家还有没有其他的办法,我搞了好长时间都没有搞定,郁闷死了:(
      

  6.   

    双向一对一?
    1.主键谁依赖谁?
    2.一个Employee是一个Person,一个Person就一定是一个Employee?
      

  7.   

    在我的应用中,resume和resumeinfo确实是双向一对一的关系,resume中存放简历的概要信息,而resumeinfo中存放简历的详细信息,他们之间是一对一的关系,是概要信息和详细信息间的对应关系。
      

  8.   

    感觉好象不是hbm.xml的问题(你的hbm.xml有省略的地方,不知道有什么问题),会不会你的resume或resumenfo和其他的表的主键有引用关系,而你的程序当中没有实例化那个"东东",比如说ACCOUNTID还没生成(只是猜测)。
      

  9.   

    换一种一对一的方式试一下:把 resume.hbm.xml里的
    <one-to-one
            name="resumebasicinfo"
            class="com.cyber.cyberhr.model.Resumebasicinfo"
    cascade="all"
        />
    该成
    <many-to-one
        name="resumebasicinfo"
        class="com.cyber.cyberhr.model.Resumebasicinfo"
        unique="true"
        />把resumebasicinfo.hbm.xml里的  
    <one-to-one
            name="resume"
            class="com.cyber.cyberhr.model.Resume"
    constrained="true"
        />
    该成
        <one-to-one
            name="resume"
            class="com.cyber.cyberhr.model.Resume"
    property-ref="resumebasicinfo"
        />