隨筆 - 23  文章 - 3  trackbacks - 0
          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          1、
          org.springframework.orm.ObjectRetrievalFailureException: Object of class [com.xindeco.myregister.pojo.MyRegisterInfo] with identifier [14]: not found
          MyRegisterInfo在數(shù)據(jù)庫沒有identifier [14]對(duì)象。


          2、
          org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is org.hibernate.MappingException: Repeated column in mapping for entity: com.xindeco.myregister.pojo.MyRegisterInfo column: password (should be mapped with insert="false" update="false")

          出錯(cuò)原因:password 和repassword同時(shí)對(duì)應(yīng)數(shù)據(jù)庫表中的password一列,同時(shí)update和insert都設(shè)為true。
          xml文件如下:
          ??? <property name="password"
          ????????????????????????? type="java.lang.String"
          ????????????????????????? update="true"
          ????????????????????????? insert="true"
          ????????????????????????? access="property"
          ????????????????????????? column="password"
          ????????????????????????? length = "32"
          ????????????????????????? />

          ???????????????????????? <property name="repassword"
          ????????????????????????? type="java.lang.String"
          ????????????????????????? update="false"
          ????????????????????????? insert="false"
          ????????????????????????? access="property"
          ????????????????????????? column="password"
          ????????????????????????? length = "32"
          ????????????????????????? />
          解決的方法:
          將repassword的insert和update設(shè)為false。


          3、
          org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed;
          nested exception is org.hibernate.PropertyNotFoundException: Could not find a getter for ID in class

          錯(cuò)誤原因:hibernate的映射文件中ID是大寫的,而pojo的類中id是小寫的

          注意事項(xiàng):每個(gè)pojo的類都要繼承abstractEntity,其中abstractEntity類有個(gè)ID的屬性要重寫
          ?public abstract class AbstractEntity
          ??? implements Entity, BaseDTO {

          ??? abstract public long getID();

          ??? abstract public void setID(long id);

          ??? public int hashCode() {
          ??????? return (int)this.getID();
          ??? }

          ??? public boolean equals(Object obj) {
          ??????? if (obj == this) {
          ??????????? return true;
          ??????? }
          ??????? if (obj instanceof Entity) {
          ??????????? return this.getID() == ( (Entity) obj).getID();
          ??????? }
          ??????? return false;
          ??? }
          }

          4、
          org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition

          錯(cuò)誤原因:
          在application.xml文件中deleteRegister方法以delete開頭,并沒有被設(shè)定為可更改的,應(yīng)如下設(shè)置:
          ?<!--為事物創(chuàng)建代理類,并指定方法的事物類型-->
          ? <bean id="baseTxProxy" lazy-init="true" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
          ??? <property name="transactionManager">
          ????? <ref bean="transactionManager"/>
          ??? </property>
          ??? <property name="transactionAttributes">
          ????? <props>
          ??????? <prop key="add*">PROPAGATION_REQUIRED</prop>
          ??????? <prop key="cancel*">PROPAGATION_REQUIRED</prop>
          ???????????</props>
          ??? </property>
          ? </bean>
          加上一行
          ? <prop key="delete*">PROPAGATION_REQUIRED</prop>

          5、
          ???ERROR org.apache.struts.util.RequestUtils - Error creating form bean of class com.xindeco.business.web.form.GraAppInfoForm

          public class? GraAppInfoForm
          extends ActionForm 錯(cuò)誤寫成
          public abstratic?class? GraAppInfoForm
          extends ActionForm

          6、
          2006-04-25 08:56:38,495 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@8e2fb5
          java.lang.ClassCastException: $Proxy0
          ?at com.xindeco.business.web.action.GraAppAction.newone(GraAppAction.java:30)
          ?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:585)
          ?at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
          ?at com.xindeco.core.web.action.BaseAction.dispatchMethod(BaseAction.java:153)
          ?at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)


          actioin類中的newone方法如下:
          public? class GraAppAction
          ??? extends BaseAction {
          ??? public ActionForward newone(ActionMapping mapping, ActionForm form,
          ????????????????????????????? HttpServletRequest request,
          ????????????????????????????? HttpServletResponse response) throws Exception {
          ???????GraAppService ?graservice = (GraAppService) this.getBean("GraAppService");
          }

          applicationcontext中的GraAppService的配置如下:
          ??? <bean id="GraAppDAO" class="com.xindeco.business.dao.impl.GraAppDAOImpl">
          ??? <property name="support">
          ????? <ref local="support"/>
          ??? </property>
          ??? <property name="sessionFactory">
          ????? <ref local="sessionFactory"/>
          ??? </property>
          ? </bean>
          ? <bean id="GraAppService" parent="baseTxProxy">
          ??? <property name="target">
          ????? <bean class="com.xindeco.business.service.impl.GraAppServiceImpl" autowire="byName">
          ??????? <property name="baseDAO">
          ????????? <ref bean="GraAppDAO"/>
          ??????? </property>
          ????? </bean>
          ??? </property>
          ? </bean>

          因此this.getBean("GraAppService");是為了得到GraAppServicImpl類的實(shí)現(xiàn)。GraAppService是interface
          public class GraAppServiceImpl extends BaseServiceImpl
          ??? implements GraAppService{
          }

          7、org.hibernate.hql.ast.QuerySyntaxException: Demand is not mapped. [from Demand where unitid = ? and needNum > usedNeedNum]

          hibernate.cfg.xml沒有配置Demand.hbm.xml文件的目錄

          8、org.springframework.jdbc.BadSqlGrammarException: Bad SQL grammar [] in task 'Hibernate operation'; nested exception is java.sql.SQLException: 列名 'id' 無效。
          java.sql.SQLException: 列名 'name' 無效。

          因?yàn)閔ibernate聲明的id,name的columnid屬性沒有與數(shù)據(jù)庫的字段對(duì)應(yīng),所以id,name無效。


          9、java.lang.NumberFormatException: null
          ?at java.lang.Integer.parseInt(Integer.java:415)
          ?at java.lang.Integer.parseInt(Integer.java:497)
          ?at com.xindeco.business.service.impl.DemandServiceImpl.findDemandListByUnitId(DemandServiceImpl.java:33)

          錯(cuò)誤語句為
          ?needNum = Integer.parseInt(demand.getNeedNum());
          ?usedNeedNum = Integer.parseInt(demand.getUsedNeedNum());
          因?yàn)閐emand.getUsedNeedNum()==null,無法轉(zhuǎn)化為string 類型,

          10、rg.apache.jasper.JasperException: /GraAppInfo/GraAppInfoNew.jsp(343,29) According to TLD, tag bean:write must be empty, but is not

          錯(cuò)誤的原因:
          ????????????? <select name="politicsID" >
          ??????????? ?<option value="">請(qǐng)選擇</option>
          ?????? <logic:notEmpty name="politicsList">
          ??????????????? <logic:iterate id="politics" name="politicsList">
          ????????????????????????? </logic:notEmpty>
          ???????????<option value="<bean:write name="politics" property="codeID"/>"><bean:write name="politics" property="codeName"/></option>
          ????????? </logic:iterate>
          ?</select>
          就因?yàn)樯倭?>
          以后懂得通過查找字?jǐn)?shù),來檢查錯(cuò)誤


          11、2006-04-26 13:27:54,812 ERROR com.xindeco.core.util.BeanUtils - bean property [Nation] copy failed
          com.xindeco.core.exception.ConvertException: org.springframework.orm.hibernate3.HibernateSystemException: Unknown entity: java.lang.String; nested exception is org.hibernate.MappingException: Unknown entity: java.lang.String

          beanUtil.beanCopy(grapojo,form,BizConstants.CONVERTER);
          要求:
          1、pojo類的屬性只有與form屬性名字相同,才能beancopy成功
          2、pojo中屬性是實(shí)體,在form中一定要用int,long表示
          出現(xiàn)這錯(cuò)誤的原因是pojo中的屬性不是實(shí)體,而錯(cuò)誤寫成:
          string
          ?private String nation;應(yīng)改成 private?Syscode nation;

          12、
          2006-04-26 14:38:37,843 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@fa1b2d
          java.lang.NullPointerException
          ?at com.xindeco.business.web.action.GraAppAction.newone(GraAppAction.java:43)
          ?at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          ?at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

          hibernate配置文件沒改,程序找不到相應(yīng)的類
          ??????? <many-to-one
          ??????????? name="FSUnit"
          ??????????? class="com.xindeco.business.pojo.EmployUnitBaseInfo"
          ??????????? cascade="none"
          ??????????? outer-join="auto"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="fSUnit"
          ??????? />

          其實(shí)FSUnit對(duì)應(yīng)的類應(yīng)該是FSUnit
          ??????? <many-to-one
          ??????????? name="FSUnit"
          ??????????? class="com.xindeco.business.pojo.FSUnit"
          ??????????? cascade="none"
          ??????????? outer-join="auto"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="fSUnit"
          ??????? />

          13、
          org.hibernate.MappingException: An association from the table GraAppInfo refers to an unmapped class: com.xindeco.business.pojo.FSUnit

          錯(cuò)誤原因:hibernate.cfg.xml沒有配置fsunit.hbm.xml文件的位置

          14、
          java.lang.ClassCastException: com.xindeco.business.dao.impl.GraAppDAOImpl
          at com.xindeco.business.service.impl.GraAppServiceImpl.addGraduateApp(GraAppServiceImpl.java:16)
          GraAppServiceImpl.java:16
          第16行: GraAppDAO dao = (GraAppDAO) this.getBaseDAO();//其實(shí)得到的是GraAppDAOImpl

          錯(cuò)誤的原因是
          public class GraAppDAOImpl
          ??? extends BaseDAOImpl {

          }
          沒有實(shí)現(xiàn)GraAppDAO接口,正確的做法是
          public class GraAppDAOImpl
          ??? extends BaseDAOImpl implements GraAppDAO {
          }
          先繼承后實(shí)現(xiàn)


          15、2006-04-27 08:38:54,078 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@1d6399b
          java.lang.ClassCastException: com.xindeco.business.pojo.SysCode
          ?at org.hibernate.type.StringType.set(StringType.java:26)
          ?at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:63)
          ?at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:40)

          一般是因?yàn)閔ibernate聲明類型和pojo類聲明的類型不一樣,并且前面已經(jīng)出現(xiàn)了Hibernate: insert into TGraAppInfo (name, whereFrom, degree, college, speciality, studentRelTel, remark, higherEduLength, highSchool, studyResume, normalOrNot, proxyUnit, workPost, workPlace, studentAddress, studentPostNumber, nation, appStatus) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
          的操作提示,查出錯(cuò)誤的原因有:
          ??????? <many-to-one
          ??????????? name="demand"
          ??????????? class="com.xindeco.business.pojo.Syscode"
          ??????????? cascade="none"
          ??????????? outer-join="auto"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="demandID"
          ??????? />
          ???????? <property
          ??????????? name="appStatus"
          ??????????? type="int"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="appStatus"
          ??????????? length="10"
          ??????? />
          應(yīng)改為????
          ??????? <many-to-one
          ??????????? name="demand"
          ??????????? class="com.xindeco.business.pojo.Demand"
          ??????????? cascade="none"
          ??????????? outer-join="auto"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="demandID"
          ??????? />

          ??<many-to-one
          ??????????? name="nation"
          ??????????? class="com.xindeco.business.pojo.SysCode"
          ??????????? cascade="none"
          ??????????? outer-join="auto"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="nation"
          ??????? />

          16、
          org.springframework.dao.InvalidDataAccessApiUsageException: object references an unsaved transient instance - save the transient instance before flushing: com.xindeco.business.pojo.SysCode
          ?at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:626)
          ?at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:570)
          ?at
          org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:482)




          pojo類為:
          public class GraAppInfo{
          ???????????? private College college;
          }

          action 類為
          public class GraAppAction
          ??? extends BaseAction {
          ?????? public ActionForward add(ActionMapping mapping, ActionForm form,
          ???????????????????????????? HttpServletRequest request,
          ???????????????????????????? HttpServletResponse response) throws Exception {

          ????????graInfo.setCollege(new College());\\必須從數(shù)據(jù)庫找到college這個(gè)對(duì)象,而不能新生成
          ???????
          ??????? graInfo.getCollege().setID(graForm.getCollegeID());
          ??????? graInfo.setAppStatus(Integer.parseInt("0"));
          ??????service.addGraduateApp(graInfo);
          }

          public class GraAppServiceImpl extends BaseServiceImpl
          ??? implements GraAppService{

          ??? public boolean addGraduateApp(GraAppInfo info)
          ??? {
          ??????? this.getBaseDAO().save(info);
          ??????? return true;
          ??? }
          }
          dao類save方法為
          ??? getHibernateTemplate().save(obj);

          當(dāng)cascade="all",插入new college 除了id和原來的記錄一樣,其他的字段全部都被更新,為null
          當(dāng)cascase=“insert”,插入new college 只會(huì)把它的id插入grainfo表中,其他字段不變。

          17、java.sql.SQLException: Unable to convert between java.lang.Integer and BLOB.
          因?yàn)?br />??????? <property
          ??????????? name="province"
          ??????????? type="com.xindeco.business.pojo.SysCode"http://不能用復(fù)雜類,
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="provinceId"
          ??????? />
          應(yīng)該改為
          ??? ??????? <many-to-one
          ??????????? name="province"
          ??????????? class="com.xindeco.business.pojo.SysCode"
          ??????????? cascade="none"
          ??????????? outer-join="auto"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="provinceId"
          ??????? />

          18、javax.servlet.jsp.JspException: Cannot create iterator for this collection
          ?at org.apache.struts.taglib.logic.IterateTag.doStartTag(IterateTag.java:265)
          jsp文件如下:
          ? ?<logic:notEmpty name="graduateList" >
          ? ?<logic:iterate id="graduate"? name="graduateList" >
          ?? </ogic:notEmpty >
          ?? </ogic:iterat>
          graduateList是一個(gè)類,而logic:iterator要求必須是ArrayList,HashSet....這樣的集合類,而graduateList中一個(gè)屬性是ArrayList或HashSet的
          應(yīng)改為:
          <logic:notEmpty name="graduateList" property="items">
          ?<logic:iterate id="graduate"? name="graduateList" property="items" >
          ?</ogic:notEmpty >
          ??</ogic:iterat>


          19、2006-05-11 17:13:37,468 ERROR com.xindeco.business.web.action.GraAppAction - com.xindeco.business.web.action.GraAppAction@bc22eb
          org.hibernate.LazyInitializationException: could not initialize proxy - the owning Session was closed

          SysUser user= (SysUser) request.getSession().getAttribute(WebConstants.SESSION_USER);
          ??????? System.out.println(user.getRole().getRoleName());
          當(dāng)hibernate session取出數(shù)據(jù)放到http session時(shí),
          由于sysuser中role的lazy=“true”,所以沒有將RoleName放到http session中,當(dāng)System.out.println(user.getRole().getRoleName());
          時(shí),雖然http session還開著, hibernat seesion已經(jīng)關(guān)閉
          ??????? <many-to-one
          ??????????? name="role"
          ??????????? class="com.xindeco.business.pojo.SysRole"
          ??????????? lazy="false"
          ??????????? cascade="none"
          ??????????? outer-join="auto"
          ??????????? update="true"
          ??????????? insert="true"
          ??????????? access="property"
          ??????????? column="roleID"
          ??????? />
          20、Association references unmapped class: com.xindeco.workflow.WFNode
          因?yàn)閍pplication.xml文件中沒有配置<mapping resource="com/xindeco/workflow/WFNode.hbm.xml"/>
          系統(tǒng)找不到WFNode

          ??????? < set
          ????????????name
          = " nodes "
          ????????????table
          = " WF_ROLENODES "
          ????????????lazy
          = " true "
          ????????????inverse
          = " false "
          ????????????cascade
          = " none "
          ????????????sort
          = " unsorted "
          ????????
          >

          ??????????????
          < key
          ??????????????????column
          = " roleID "
          ??????????????
          >
          ??????????????
          </ key >

          ?????????????????
          < many - to - many
          ??????????????????
          class = " com.xindeco.workflow.WFNode "
          ??????????????????column
          = " nodeId "
          ??????????????????outer
          - join = " auto "
          ???????????????
          />
          ???????????????

          ????????
          </ set >
          posted on 2006-04-16 15:54 aimy 閱讀(2710) 評(píng)論(1)  編輯  收藏

          FeedBack:
          # re: 4.16 面對(duì)幾個(gè)錯(cuò)誤的解決關(guān)鍵 2007-07-06 15:58 大灰狼
          正在學(xué)習(xí)中,支持一下~  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 彰化市| 屏山县| 麻栗坡县| 左云县| 临江市| 华宁县| 石林| 靖江市| 鄱阳县| 桐梓县| 陇川县| 巩留县| 丰台区| 尚义县| 黎城县| 西贡区| 沧源| 梁河县| 休宁县| 哈尔滨市| 开原市| 娱乐| 兴文县| 永康市| 洛南县| 永安市| 江达县| 南汇区| 察哈| 武义县| 同仁县| 抚顺县| 孝昌县| 亚东县| 三江| 河西区| 湘西| 内丘县| 昌图县| 汉沽区| 枣强县|