//实体bean,我省略了get,set方法。因为都是自动生成的//BaseMember.java
private Integer meId;
private String meName;
private Byte meSex;
private Integer meNational;
private Date meBirthday;
private String mePhoto;
private Set<Attendance> attendances = new HashSet<Attendance>(0);
private Set<Atteninfo> atteninfos = new HashSet<Atteninfo>(0);
private Set<Basicainfo> basicainfos = new HashSet<Basicainfo>(0);
private Set<Certificate> certificates = new HashSet<Certificate>(0);//BaseAttendance.java
private Integer atId;
private Member member;
private Admin admin;
private String atRes;//BaseAtteninfo.java
private Integer aiId;
private Member member;
private Admin admin;
private Curriculum curriculum;
private String atInfo;//BaseBasicainfo.java
private Integer biId;
private Positions positions;
private City city;
private Member member;
private Admin admin;
private Atitle atitle;
private Agents agents;
private Byte isMember;//BaseCertificate.java
private Integer ceId;
private Member member;
private String ceCode;
private Date ceDate;
private Byte isGetPhoto;
private Byte isGetCertcard;
private Byte isGetEducation;
private Byte isGetCard;
private Byte isGetPapers;
private String ceRes;对应的hbm.xml<!--Member-->
<hibernate-mapping package="net.cnyun.member.entity">
<class name="Member" table="member">
<id name="meId" type="java.lang.Integer">
<column name="meID"/>
<generator class="native"/>
</id>
<property generated="never" lazy="false" name="meName" type="java.lang.String">
<column length="20" name="meName" not-null="true"/>
</property>
<property generated="never" lazy="false" name="meSex" type="java.lang.Byte">
<column name="meSex" not-null="true"/>
</property>
<many-to-one name="meNational" class="National" fetch="select">
<column name="meNational" />
</many-to-one>
<property generated="never" lazy="false" name="meBirthday" type="java.util.Date">
<column length="10" name="meBirthday"/>
</property>
<property generated="never" lazy="false" name="mePhoto" type="java.lang.String">
<column length="200" name="mePhoto"/>
</property>
<set inverse="true" name="attendances" sort="unsorted">
<key>
<column name="memberID"/>
</key>
<one-to-many class="net.cnyun.clazz.entity.Attendance"/>
</set>
<set inverse="true" name="atteninfos" sort="unsorted">
<key>
<column name="memberID"/>
</key>
<one-to-many class="net.cnyun.clazz.entity.Atteninfo"/>
</set>
<set inverse="true" name="basicainfos" sort="unsorted">
<key>
<column name="meID"/>
</key>
<one-to-many class="Basicainfo"/>
</set>
<set inverse="true" name="certificates" sort="unsorted">
<key>
<column name="memberID"/>
</key>
<one-to-many class="Certificate"/>
</set>
</class>
</hibernate-mapping>
<!--Attendance-->
<hibernate-mapping package="net.cnyun.clazz.entity">
<class name="Attendance" table="attendance">
<id name="atId" type="java.lang.Integer">
<column name="atID"/>
<generator class="native"/>
</id>
<many-to-one class="net.cnyun.member.entity.Member" fetch="select" name="member">
<column name="memberID" not-null="true"/>
</many-to-one>
<many-to-one class="net.cnyun.core.entity.Admin" fetch="select" name="admin">
<column name="staffID" not-null="true"/>
</many-to-one>
<property generated="never" lazy="false" name="atRes" type="java.lang.String">
<column name="atRes"/>
</property>
</class>
</hibernate-mapping>
<!--Atteninfo-->
<hibernate-mapping package="net.cnyun.clazz.entity">
<class name="Atteninfo" table="atteninfo">
<id name="aiId" type="java.lang.Integer">
<column name="aiID" />
<generator class="native" />
</id>
<many-to-one name="member" class="net.cnyun.member.entity.Member" fetch="select">
<column name="memberID" not-null="true" />
</many-to-one>
<many-to-one name="admin" class="net.cnyun.core.entity.Admin" fetch="select">
<column name="adminID" not-null="true" />
</many-to-one>
<many-to-one name="curriculum" class="net.cnyun.member.entity.Curriculum" fetch="select">
<column name="atID" not-null="true" />
</many-to-one>
<property name="atInfo" type="java.lang.String">
<column name="atInfo" length="30" not-null="true" />
</property>
</class>
</hibernate-mapping>
<!--Basicainfo-->
<hibernate-mapping package="net.cnyun.member.entity">
<class name="Basicainfo" table="basicainfo">
<id name="biId" type="java.lang.Integer">
<column name="biID"/>
<generator class="native"/>
</id>
<many-to-one class="Positions" fetch="select" name="positions">
<column name="positionsID"/>
</many-to-one>
<many-to-one class="City" fetch="select" name="city">
<column name="meLocation"/>
</many-to-one>
<many-to-one class="Member" fetch="select" name="member">
<column name="meID"/>
</many-to-one>
<many-to-one class="net.cnyun.core.entity.Admin" fetch="select" name="admin">
<column name="intnWorkr"/>
</many-to-one>
<many-to-one class="Atitle" fetch="select" name="atitle">
<column name="atitleID"/>
</many-to-one>
<many-to-one class="net.cnyun.agents.entity.Agents" fetch="select" name="agents">
<column name="intnAgents"/>
</many-to-one>
<property generated="never" lazy="false" name="isMember" type="java.lang.Byte">
<column name="isMember"/>
</property>
</class>
</hibernate-mapping>
<!--Certificate-->
<hibernate-mapping package="net.cnyun.member.entity">
<class name="Certificate" table="certificate">
<id name="ceId" type="java.lang.Integer">
<column name="ceID"/>
<generator class="native"/>
</id>
<many-to-one class="Member" fetch="select" name="member">
<column name="memberID" not-null="true"/>
</many-to-one>
<property generated="never" lazy="false" name="ceCode" type="java.lang.String">
<column length="20" name="ceCode" not-null="true"/>
</property>
<property generated="never" lazy="false" name="ceDate" type="java.util.Date">
<column length="10" name="ceDate" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetPhoto" type="java.lang.Byte">
<column name="isGetPhoto" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetCertcard" type="java.lang.Byte">
<column name="isGetCertcard" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetEducation" type="java.lang.Byte">
<column name="isGetEducation" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetCard" type="java.lang.Byte">
<column name="isGetCard" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetPapers" type="java.lang.Byte">
<column name="isGetPapers" not-null="true"/>
</property>
<property generated="never" lazy="false" name="ceRes" type="java.lang.String">
<column name="ceRes"/>
</property>
</class>
</hibernate-mapping>
我在Struts的Action中进行Member的添加。一直抛空指针异常。我记得以前做过小例子,插入数据的时候并不需要考虑外键的操作。
类别表
private Integer ptId;
private String ptName;
private Integer ptPhysical;
private Integer ptInte;
private Integer ptLove;
private Set petses = new HashSet(0);
对象表
private Integer petId;
private Users users;
private Pettype pettype;
private String petName;在我插入某个类别的时候,我并不需要设置Set petses,直接获得类别名称等属性就可以插入。为什么在这里就一直抛空指针呢??是不是我的数据库设计有问题呢??
private Integer meId;
private String meName;
private Byte meSex;
private Integer meNational;
private Date meBirthday;
private String mePhoto;
private Set<Attendance> attendances = new HashSet<Attendance>(0);
private Set<Atteninfo> atteninfos = new HashSet<Atteninfo>(0);
private Set<Basicainfo> basicainfos = new HashSet<Basicainfo>(0);
private Set<Certificate> certificates = new HashSet<Certificate>(0);//BaseAttendance.java
private Integer atId;
private Member member;
private Admin admin;
private String atRes;//BaseAtteninfo.java
private Integer aiId;
private Member member;
private Admin admin;
private Curriculum curriculum;
private String atInfo;//BaseBasicainfo.java
private Integer biId;
private Positions positions;
private City city;
private Member member;
private Admin admin;
private Atitle atitle;
private Agents agents;
private Byte isMember;//BaseCertificate.java
private Integer ceId;
private Member member;
private String ceCode;
private Date ceDate;
private Byte isGetPhoto;
private Byte isGetCertcard;
private Byte isGetEducation;
private Byte isGetCard;
private Byte isGetPapers;
private String ceRes;对应的hbm.xml<!--Member-->
<hibernate-mapping package="net.cnyun.member.entity">
<class name="Member" table="member">
<id name="meId" type="java.lang.Integer">
<column name="meID"/>
<generator class="native"/>
</id>
<property generated="never" lazy="false" name="meName" type="java.lang.String">
<column length="20" name="meName" not-null="true"/>
</property>
<property generated="never" lazy="false" name="meSex" type="java.lang.Byte">
<column name="meSex" not-null="true"/>
</property>
<many-to-one name="meNational" class="National" fetch="select">
<column name="meNational" />
</many-to-one>
<property generated="never" lazy="false" name="meBirthday" type="java.util.Date">
<column length="10" name="meBirthday"/>
</property>
<property generated="never" lazy="false" name="mePhoto" type="java.lang.String">
<column length="200" name="mePhoto"/>
</property>
<set inverse="true" name="attendances" sort="unsorted">
<key>
<column name="memberID"/>
</key>
<one-to-many class="net.cnyun.clazz.entity.Attendance"/>
</set>
<set inverse="true" name="atteninfos" sort="unsorted">
<key>
<column name="memberID"/>
</key>
<one-to-many class="net.cnyun.clazz.entity.Atteninfo"/>
</set>
<set inverse="true" name="basicainfos" sort="unsorted">
<key>
<column name="meID"/>
</key>
<one-to-many class="Basicainfo"/>
</set>
<set inverse="true" name="certificates" sort="unsorted">
<key>
<column name="memberID"/>
</key>
<one-to-many class="Certificate"/>
</set>
</class>
</hibernate-mapping>
<!--Attendance-->
<hibernate-mapping package="net.cnyun.clazz.entity">
<class name="Attendance" table="attendance">
<id name="atId" type="java.lang.Integer">
<column name="atID"/>
<generator class="native"/>
</id>
<many-to-one class="net.cnyun.member.entity.Member" fetch="select" name="member">
<column name="memberID" not-null="true"/>
</many-to-one>
<many-to-one class="net.cnyun.core.entity.Admin" fetch="select" name="admin">
<column name="staffID" not-null="true"/>
</many-to-one>
<property generated="never" lazy="false" name="atRes" type="java.lang.String">
<column name="atRes"/>
</property>
</class>
</hibernate-mapping>
<!--Atteninfo-->
<hibernate-mapping package="net.cnyun.clazz.entity">
<class name="Atteninfo" table="atteninfo">
<id name="aiId" type="java.lang.Integer">
<column name="aiID" />
<generator class="native" />
</id>
<many-to-one name="member" class="net.cnyun.member.entity.Member" fetch="select">
<column name="memberID" not-null="true" />
</many-to-one>
<many-to-one name="admin" class="net.cnyun.core.entity.Admin" fetch="select">
<column name="adminID" not-null="true" />
</many-to-one>
<many-to-one name="curriculum" class="net.cnyun.member.entity.Curriculum" fetch="select">
<column name="atID" not-null="true" />
</many-to-one>
<property name="atInfo" type="java.lang.String">
<column name="atInfo" length="30" not-null="true" />
</property>
</class>
</hibernate-mapping>
<!--Basicainfo-->
<hibernate-mapping package="net.cnyun.member.entity">
<class name="Basicainfo" table="basicainfo">
<id name="biId" type="java.lang.Integer">
<column name="biID"/>
<generator class="native"/>
</id>
<many-to-one class="Positions" fetch="select" name="positions">
<column name="positionsID"/>
</many-to-one>
<many-to-one class="City" fetch="select" name="city">
<column name="meLocation"/>
</many-to-one>
<many-to-one class="Member" fetch="select" name="member">
<column name="meID"/>
</many-to-one>
<many-to-one class="net.cnyun.core.entity.Admin" fetch="select" name="admin">
<column name="intnWorkr"/>
</many-to-one>
<many-to-one class="Atitle" fetch="select" name="atitle">
<column name="atitleID"/>
</many-to-one>
<many-to-one class="net.cnyun.agents.entity.Agents" fetch="select" name="agents">
<column name="intnAgents"/>
</many-to-one>
<property generated="never" lazy="false" name="isMember" type="java.lang.Byte">
<column name="isMember"/>
</property>
</class>
</hibernate-mapping>
<!--Certificate-->
<hibernate-mapping package="net.cnyun.member.entity">
<class name="Certificate" table="certificate">
<id name="ceId" type="java.lang.Integer">
<column name="ceID"/>
<generator class="native"/>
</id>
<many-to-one class="Member" fetch="select" name="member">
<column name="memberID" not-null="true"/>
</many-to-one>
<property generated="never" lazy="false" name="ceCode" type="java.lang.String">
<column length="20" name="ceCode" not-null="true"/>
</property>
<property generated="never" lazy="false" name="ceDate" type="java.util.Date">
<column length="10" name="ceDate" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetPhoto" type="java.lang.Byte">
<column name="isGetPhoto" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetCertcard" type="java.lang.Byte">
<column name="isGetCertcard" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetEducation" type="java.lang.Byte">
<column name="isGetEducation" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetCard" type="java.lang.Byte">
<column name="isGetCard" not-null="true"/>
</property>
<property generated="never" lazy="false" name="isGetPapers" type="java.lang.Byte">
<column name="isGetPapers" not-null="true"/>
</property>
<property generated="never" lazy="false" name="ceRes" type="java.lang.String">
<column name="ceRes"/>
</property>
</class>
</hibernate-mapping>
我在Struts的Action中进行Member的添加。一直抛空指针异常。我记得以前做过小例子,插入数据的时候并不需要考虑外键的操作。
类别表
private Integer ptId;
private String ptName;
private Integer ptPhysical;
private Integer ptInte;
private Integer ptLove;
private Set petses = new HashSet(0);
对象表
private Integer petId;
private Users users;
private Pettype pettype;
private String petName;在我插入某个类别的时候,我并不需要设置Set petses,直接获得类别名称等属性就可以插入。为什么在这里就一直抛空指针呢??是不是我的数据库设计有问题呢??
2009-8-26 11:25:19 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at net.cnyun.common.hibernate3.BaseManagerImpl.save(BaseManagerImpl.java:128)
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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy31.save(Unknown Source)
at net.cnyun.member.action.MemberOperAct.doInsert(MemberOperAct.java:55)
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:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:150)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:48)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:184)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:74)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:127)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:107)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:206)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:115)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:143)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:121)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:155)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:50)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:504)
at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:424)
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:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:99)
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.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70)
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:76)
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.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
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(Unknown Source)
at net.cnyun.common.hibernate3.BaseManagerImpl.save(BaseManagerImpl.java:128)
public class BaseManagerImpl<T extends Serializable> implements BaseManager<T> {
protected Logger log = LoggerFactory.getLogger(getClass());
private BaseDao<T> dao;
....126 public T save(T entity) {
127 return dao.save(entity);
128 }....
}
private String meName;
private Byte meSex;
private Integer meNational;
private Date meBirthday;
private String mePhoto;
这几个值,都不为空。但下一句语句就抛异常
在return 那行下个断点看看,dao 和 entity 里有个为空吧。
2009-08-26 01:59 ERROR org.hibernate.property.BasicPropertyAccessor - IllegalArgumentException in class: net.cnyun.member.entity.base.BaseNational, getter method of property: naId
这个问题解决了,原因是National和Member表是有主外建的联系。而我在页面是这么写的
控件的名字是 member.meNational 这样虽然可以取到值,但会抛出异常而无法保存。只需将名字修改为member.meNational.naId就可以保存值了。
<select name="member.meNational" id="member.meNational">
<!-- <#if nationaList??>
<#list nationaList as mz> -->
<option value="${mz.naId}">${mz.national}</option>
<!-- </#list>
</#if>-->
</select>谢谢楼上的朋友,现在结贴。之前的异常也是由于dao没能实例化造成,粗心引起的。在此谢过你们的帮助。