Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用hibernate和struts2插入具有一对一映射的多个表_Hibernate_Jsp_Struts2 - Fatal编程技术网

使用hibernate和struts2插入具有一对一映射的多个表

使用hibernate和struts2插入具有一对一映射的多个表,hibernate,jsp,struts2,Hibernate,Jsp,Struts2,我有5张桌子: 学生个人信息 学生联系方式详情 学生家长详细信息 学生资格详情 研究其他细节 这里的StudentPersonnelDetails是将studentId作为主键的父表,它是所有其他表中的外键 我正在使用Hibernate4.2.1和Struts2.1 我在JSP中有一个表单,其中的控件包含所有学生的详细信息,这些信息应该插入到相应的表中 现在我的问题是,我得到的NullPointerException具有以下堆栈跟踪: java.lang.NullPointerExcepti

我有5张桌子:

  • 学生个人信息
  • 学生联系方式详情
  • 学生家长详细信息
  • 学生资格详情
  • 研究其他细节
这里的
StudentPersonnelDetails
是将
studentId
作为主键的父表,它是所有其他表中的外键

我正在使用Hibernate4.2.1和Struts2.1

我在JSP中有一个表单,其中的控件包含所有学生的详细信息,这些信息应该插入到相应的表中

现在我的问题是,我得到的
NullPointerException
具有以下堆栈跟踪:

java.lang.NullPointerException
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.getPropertyValue(AbstractEntityTuplizer.java:648)
    at org.hibernate.persister.entity.AbstractEntityPersister.getPropertyValue(AbstractEntityPersister.java:4527)
    at org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:99)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:114)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
    at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:735)
    at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:727)
    at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:723)
    at com.dao.StudentDAO.saveOtherDetails(StudentDAO.java:133)
    at com.actions.StudentRegisterAction.otherDetails(StudentRegisterAction.java:125)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Dec 18, 2013 10:28:28 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: No configuration found for the specified action: 'StudentOtherAction' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value.
Dec 18, 2013 10:28:28 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: No configuration found for the specified action: 'StudentOtherAction' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value.
Dec 18, 2013 10:28:28 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: No configuration found for the specified action: '' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value.
Dec 18, 2013 10:28:28 AM com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
WARNING: No configuration found for the specified action: '' in namespace: '/jsp'. Form action defaulting to 'action' attribute's literal value.
所以我并没有走错方向。以下是相关的类和文件供您参考

1) student.hbm.xml

<class name="com.beans.student.StudentPersonnelDetails" table="SchoolStudentPersonnelDetails">

    <id name="sId" column="StudentId">
        <generator class="increment">

        </generator>

    </id>
    <property name="course" column="Course"></property>
    <property name="division" column="Division"></property>
    <property name="birthDate" column="BirthDate" type="java.util.Date"></property>
    <property name="admissionDate" column="AdmissionDate" type="java.util.Date"></property>
    <property name="fName" column="FirstName"></property>
    <property name="middleName" column="MiddleName"></property>
    <property name="lName" column="LastName"></property>
    <property name="gender" column="Gender"></property>
    <property name="nationality" column="Nationality"></property>
    <property name="bloodGroup" column="BloodGroup"></property>
    <property name="caste" column="Caste"></property>
    <property name="religion" column="Religion"></property>
    <property name="feeStructureFor" column="FeeStructureFor"></property>
    <property name="feeConcession" column="FeesConcession" type="java.lang.Boolean"></property>

    <one-to-one name="StudentContactDetails" class="com.beans.student.StudentContactDetails"  cascade="delete"></one-to-one>
     </class>

      <class name="com.beans.student.StudentContactDetails" table="SchoolStudentContactDetails">

        <id name="sId" column="StudentId">
            <generator class="foreign">
            <param name="property">StudentPersonnelDetails</param></generator>
        </id>

        <property name="residentialAddress" column="ResidentialAddress" ></property>
        <property name="permanentAddress" column="PermanentAddress"></property>
        <property name="resPerSame" column="ResPerAddressSame" type="java.lang.Boolean"></property>
        <property name="country" column="Country"></property>
        <property name="state" column="State"></property>
        <property name="city" column="City"></property>

        <one-to-one name="StudentPersonnelDetails" class="com.beans.student.StudentPersonnelDetails" constrained="true"></one-to-one>
     </class>

       <class name="com.beans.student.StudentParentDetails" table="SchoolStudentParentDetails">

     <id name="sId" column="StudentId">

        <generator class="foreign">
        <param name="property">StudentPersonnelDetails</param>
        </generator>

     </id>

     <property name="fatherName" column="FatherName"></property>
     <property name="motherName" column="MotherName"></property>
     <property name="fatherQualification" column="FatherQualification"></property>
     <property name="motherQualification" column="MotherQualification"></property>
     <property name="fatherOccupation" column="FatherOccupation"></property>
     <property name="motherOccupation" column="MotherOccupation"></property>
     <property name="fatherEmail" column="FatherEmail"></property>
     <property name="motherEmail" column="MotherEmail"></property>
     <property name="fatherMobileNo" column="FatherMobile"></property>
     <property name="motherMobileNo" column="MotherMobile"></property>

     <one-to-one name="StudentPersonnelDetails" class="com.beans.student.StudentPersonnelDetails" constrained="true"></one-to-one>

     </class>


     <class name="com.beans.student.StudentQualificationDetails" table="SchoolQualificationDetails">

     <id name="sId" column="StudentId">

     <generator class="foreign">
     <param name="property">StudentPersonnelDetails</param>
     </generator>

     </id>

     <property name="previousSchool" column="PreviousSchool"></property>
     <property name="schoolState" column="PreviousSchoolState"></property>
     <property name="schoolCity" column="PreviousSchoolCity"></property>
     <property name="percentage" column="PreviousClassPercentage" type="java.lang.Double"></property>

     <one-to-one name="StudentPersonnelDetails" class="com.beans.student.StudentPersonnelDetails" constrained="true"></one-to-one>

     </class>

     <class name="com.beans.student.StudentOtherDetails" table="SchoolStudentOtherDetails">

        <id name="sId" column="StudentId">

        <generator class="foreign">
        <param name="property"></param>
        </generator>     

        </id>

     <property name="hostelFacility" column="HostelFacility" type="java.lang.Boolean"></property>
     <property name="busFacility" column="BusFacility" type="java.lang.Boolean"></property>
     <property name="nearbyArea" column="NearByArea"></property>

     <one-to-one name="StudentPersonnelDetails" class="com.beans.student.StudentPersonnelDetails" constrained="true"></one-to-one>

     </class> 
3) StudentDAO.java

package com.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.beans.student.StudentContactDetails;
import com.beans.student.StudentOtherDetails;
import com.beans.student.StudentParentDetails;
import com.beans.student.StudentPersonnelDetails;
import com.beans.student.StudentQualificationDetails;
import com.dbutil.HibernateUtil;

public class StudentDAO {



    /*public boolean registerStudent(StudentPersonnelDetails sp,StudentContactDetails sc,StudentParentDetails sparent,StudentQualificationDetails sq,StudentOtherDetails so){

        Session session=null;
        Transaction tr=null;
        System.out.println("in registerStudent.....");
        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sp);
            session.saveOrUpdate(sc);
            session.saveOrUpdate(sparent);
            session.saveOrUpdate(sq);
            session.saveOrUpdate(so);

            tr.commit();
            return true;
        }catch(Exception e){
            e.printStackTrace();

            tr.rollback();
        }
        return false;
    }*/


    public boolean savePersonnelDetails(StudentPersonnelDetails sp){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sp);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }


        return false;
    }


    public boolean saveContactDetails(StudentContactDetails sc){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sc);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;
    }

    public boolean saveParentDetails(StudentParentDetails sparent){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sparent);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;
    }

    public boolean saveQualificationDetails(StudentQualificationDetails sq){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sq);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;       
    }

    public boolean saveOtherDetails(StudentOtherDetails so){
        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(so);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;
    }
}
所有细节都是Bean类

package com.dao;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.beans.student.StudentContactDetails;
import com.beans.student.StudentOtherDetails;
import com.beans.student.StudentParentDetails;
import com.beans.student.StudentPersonnelDetails;
import com.beans.student.StudentQualificationDetails;
import com.dbutil.HibernateUtil;

public class StudentDAO {



    /*public boolean registerStudent(StudentPersonnelDetails sp,StudentContactDetails sc,StudentParentDetails sparent,StudentQualificationDetails sq,StudentOtherDetails so){

        Session session=null;
        Transaction tr=null;
        System.out.println("in registerStudent.....");
        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sp);
            session.saveOrUpdate(sc);
            session.saveOrUpdate(sparent);
            session.saveOrUpdate(sq);
            session.saveOrUpdate(so);

            tr.commit();
            return true;
        }catch(Exception e){
            e.printStackTrace();

            tr.rollback();
        }
        return false;
    }*/


    public boolean savePersonnelDetails(StudentPersonnelDetails sp){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sp);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }


        return false;
    }


    public boolean saveContactDetails(StudentContactDetails sc){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sc);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;
    }

    public boolean saveParentDetails(StudentParentDetails sparent){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sparent);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;
    }

    public boolean saveQualificationDetails(StudentQualificationDetails sq){

        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(sq);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;       
    }

    public boolean saveOtherDetails(StudentOtherDetails so){
        Session session=null;
        Transaction tr=null;

        try{
            session=HibernateUtil.getSession();
            tr=session.beginTransaction();

            session.saveOrUpdate(so);
            tr.commit();

        }catch(Exception e){
            e.printStackTrace();
            tr.rollback();
        }

        return false;
    }
}