开发者社区 问答 正文

ibatis使用问题求解?报错

小弟最近项目中用到了ibatis,这两天一直报错,请教ibatis大神 sql配置如下:
<select id="getCpVoucherForCpDvtList"
resultMap="cpVoucherResultCheckIn"
parameterClass="elementCondition">
select master.* from cp_voucher master where
master.sum_cp_voucher_id is null
and master.is_valid='1'
<isNotNull prepend="AND" property="passwdStatus">
master.PAY_PWD_STATE = #passwdStatus#
</isNotNull>
</select>
参数类属性如下:
private String passwdStatus;
public String getPasswdStatus() {
return passwdStatus;
}
public void setPasswdStatus(String passwdStatus) {
this.passwdStatus = passwdStatus;
}

下面是报错信息:
com.ufgov.gk.common.system.exception.OtherException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];   
--- The error occurred in sqlmap/cp/CpVoucher.xml.  
--- The error occurred while preparing the mapped statement for execution.  
--- Check the CpVoucher.getCpVoucherForCpDvtList.  
--- Check the parameter map.  
--- Cause: com.ibatis.common.beans.ProbeException: There is no READABLE property named 'passwdStatus' in class 'com.ufgov.gk.common.system.dto.ElementConditionDto'; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in sqlmap/cp/CpVoucher.xml.  
--- The error occurred while preparing the mapped statement for execution.  
--- Check the CpVoucher.getCpVoucherForCpDvtList.  
--- Check the parameter map.  
--- Cause: com.ibatis.common.beans.ProbeException: There is no READABLE property named 'passwdStatus' in class 'com.ufgov.gk.common.system.dto.ElementConditionDto'
at com.ufgov.gk.server.system.log.SystemExceptionLog.afterThrowing(SystemExceptionLog.java:27)
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 org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invokeHandlerMethod(ThrowsAdviceInterceptor.java:146)
at org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:131)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
at org.springfraework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:50)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.sprigframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:631)
at com.ufgov.gk.server.cp.publish.impl.CpVoucherServiceDelegate$$EnhancerByCGLIB$$f7339278.getCpVoucherForCpDvtList(<generated>)
at com.ufgov.gk.server.cp.publish.impl.exporter.CpVoucherServiceExporter.getCpVoucherForCpDvtList(CpVoucherServiceExporter.java:419)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflectNativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:192)
at com.caucho.hessian.server.HessianSkeleton.invoke(HessianSkeleton.java:110)
at com.caucho.hessian.server.HessianServlet.service(HessianServlet.java:416)
at weblogic.serlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1006)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:419)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:315)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6722)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3764)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2644)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

求指导啊,已经困扰好多天了

展开
收起
爱吃鱼的程序员 2020-06-14 21:51:10 734 分享 版权
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
     ThereisnoREADABLEpropertynamed'passwdStatus'inclass'com.ufgov.gk.common.system.dto.ElementConditionDto

     ThereisnoREADABLEpropertynamed'passwdStatus'inclass'com.ufgov.gk.common.system.dto.ElementConditionDto';nestedexceptioniscom.ibatis.common.jdbc.exception.NestedSQLException:  

    请保证dto里的每个属性都有getter和setter方法!

    get和set都是有的,上面已经贴出来了类中相应的属性及方法 resultMap怎么写的....回复 @乾坤摄:这条sql有很多属性,我只是截了一部分,就这个属性报错回复 @clxhhsy:检查elementCondition别名是不是引用错了。。。。。。只有这一个属性有问题吗...实验换个属性试试resultMap加入这个属性启动服务会报错,会把READABLE变为WRITEABLE这个是启动报错吗  elementCondition中要包含  passwdStatus这个要属性包含这个属性,而且有set和get方法你的这个实体类应该是 ElementConditionDto,你直接写 parameterClass="elementCondition"可能是没有识别到这个类(或许是没有配置,因为没有完整代码只是猜测)你将 parameterClass换成类的完整路径例如: parameterClass= “ com.ufgov.gk.common.system.dto.ElementConditionDto ”!因为配了这句<typeAliasalias="elementCondition"type="com.ufgov.gk.common.system.dto.ElementConditionDto"/>,所以不用完整路径的 resultMap="cpVoucherResultCheckIn"  这个对应的  resultMap配置没发出来呀配置已贴出,resultMap中加入passwdStatus启动就报thereisnowriteablepropertyinclassCpVoucher,可是我这个类中也加入了passwdStatus属性,get和set方法也都有

    把完整的配置贴出来,,,包涵  resultMap="cpVoucherResultCheckIn"  、 parameterClass="elementCondition"的定义。。光看单独的<select>中的内容没错误。

    下面的日志内容提示的意思就是 ThereisnoREADABLEpropertynamed'passwdStatus'inclass'com.ufgov.gk.common.system.dto.ElementConditionDto'  

    完整配置已贴出,查看楼下回答

    1。把 passwdStatus属性都改成小写,然后重新set/get,

    2。 如果 1方法不行,就直接去掉 <isNotNullprepend="AND"property="passwdStatus">  中的 property="passwdStatus"。

    两种方法依然是报这个错

    完整配置如下:

    <?xmlversion="1.0"encoding="UTF-8"?>
    <!DOCTYPEsqlMap
      PUBLIC"-//ibatis.apache.org//DTDSQLMap2.0//EN"
      "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    <sqlMapnamespace="CpVoucher">
    <typeAliasalias="cpVoucher"type="com.ufgov.gk.common.cp.model.CpVoucher"/>
    <typeAliasalias="elementCondition"
    type="com.ufgov.gk.common.system.dto.ElementConditionDto"/>
    <resultMapid="cpVoucherResult"class="cpVoucher">
    <resultproperty="nd"column="nd"/>
    <resultproperty="cpVoucherId"column="cp_voucher_id"/>
    <resultproperty="cpVouNo"column="vou_no"/>
    <resultproperty="inputGroupId"column="input_group_id"/>
    <resultproperty="orgMoney"column="org_money"/>
    <resultproperty="curMoney"column="cur_money"/>
    <resultproperty="inputorId"column="inputor_id"/>
    <resultproperty="cdate"column="cdate"jdbcType="DATE"/>
    <resultproperty="auditDate"column="a_date"jdbcType="DATE"/>
    <resultproperty="procdate"column="proc_date"jdbcType="DATE"/>
    <resultproperty="passwdStatus"column="PAY_PWD_STATE"/>
    <resultproperty="payPwd"column="PAY_PWD"/> 
    <resultproperty="coCode"column="co_code"/>
    <resultproperty="baccCode"column="b_acc_code"/>
    <resultproperty="fundCode"column="fund_code"/>
    <resultproperty="inceptDocCode"column="inceptdoc_code"/>
    <resultproperty="manageCode"column="manage_code"/>
    <resultproperty="orgCode"column="org_code"/>
    <resultproperty="originCode"column="origin_code"/>
    <resultproperty="outlayCode"column="outlay_code"/>
    <resultproperty="payoutCode"column="payout_code"/>
    <resultproperty="paytypeCode"column="paytype_code"/>
    <resultproperty="projectTypeCode"column="PROJECT_TYPE_CODE"/>
    <resultproperty="projectCode"column="project_code"/>
    <resultproperty="sendDocTypeCode"column="SENDDOC_TYPE_CODE"/>
    <resultproperty="sendDocCode"column="senddoc_code"/>
    <resultproperty="balModeCode"column="BAL_MODE_CODE"/>
    <resultproperty="operationTypeCode"column="OPERATION_TYPE_CODE"/>
    <resultproperty="dattr1"column="D_ATTR1"/>
    <resultproperty="dattr2"column="D_ATTR2"/>
    <resultproperty="dattr3"column="D_ATTR3"/>
    <resultproperty="dattr4"column="D_ATTR4"/>
    <resultproperty="dattr5"column="D_ATTR5"/>
    <resultproperty="dattr6"column="D_ATTR6"/>
    <resultproperty="dattr7"column="D_ATTR7"/>
    <resultproperty="dattr8"column="D_ATTR8"/>
    <resultproperty="dattr9"column="D_ATTR9"/>
    <resultproperty="dattr10"column="D_ATTR10"/>
    <resultproperty="remark"column="remark"/>
    <resultproperty="checkNo"column="CHECK_NO"/>
    <resultproperty="dealState"column="DEAL_STATE"/>
    <resultproperty="bankAuditorId"column="BANK_AUDITOR_ID"/>
    <resultproperty="bankDate"column="BANK_DATE"/>
    <resultproperty="clearAuditorId"column="CLEAR_AUDITOR_ID"/>
    <resultproperty="clearDate"column="CLEAR_DATE"/>
    <resultproperty="printTimes"column="PRINT_TIMES"/>
    <resultproperty="isValid"column="IS_VALID"/>
    <resultproperty="dpBalanceId"column="DP_BALANCE_ID"/>
    <resultproperty="biBalanceId"column="BI_BALANCE_ID"/>


    <resultproperty="adjustVoucherId"column="ADJUST_VOUCHER_ID"/>
    <resultproperty="adjustVouNo"column="ADJUST_VOU_NO"/>
    <resultproperty="anStatus"column="AN_STATUS"/>
    <resultproperty="abStatusCode"column="A_STATUS_CODE"/>
    <resultproperty="cmnPactCode"column="CMN_PACT_CODE"/>
    <resultproperty="contractCode"column="CONTRACT_CODE"/>
    <resultproperty="controlType"column="CONTROL_TYPE"/>
    <resultproperty="cpAdjustCode"column="CP_ADJUST_CODE"/>
    <resultproperty="createType"column="CREATE_TYPE"/>
    <resultproperty="decType"column="DEC_TYPE"/>
    <resultproperty="dpCdUseMoney"column="DP_CD_USE_MONEY"/>
    <resultproperty="gbPactCode"column="GB_PACT_CODE"/>
    <resultproperty="inputorName"column="INPUTOR_NAME"/>
    <resultproperty="isSumCpVoucher"column="IS_SUM_CP_VOUCHER"/>
    <resultproperty="payAccCode"column="PAY_ACCCODE"/>
    <resultproperty="payAccName"column="PAY_ACCNAME"/>
    <resultproperty="payBankAccCode"column="PAY_BANKACCCODE"/>
    <resultproperty="payBankNo"column="PAY_BANKNO"/>
    <resultproperty="payBankNodeCode"column="PAY_BANKNODECODE"/>
    <resultproperty="payBankNodeName"column="PAY_BANKNODENAME"/>
    <resultproperty="payBankCode"column="PAY_BANK_CODE"/>
    <resultproperty="payBankName"column="PAY_BANK_NAME"/>
    <resultproperty="payCode"column="PAY_CODE"/>
    <resultproperty="processInstId"column="PROCESS_INST_ID"/>
    <resultproperty="qpMoney"column="QP_MONEY"/>
    <resultproperty="receAccName"column="RECE_ACCNAME"/>
    <resultproperty="receBankNodeName"column="RECE_BANKNODENAME"/>
    <resultproperty="receBankAccCode"column="RECE_BANKACCCODE"/>
    <resultproperty="receAccCode"column="RECE_ACCCODE"/>
    <resultproperty="receBankNo"column="RECE_BANKNO"/>
    <resultproperty="receBankNodeCode"column="RECE_BANKNODECODE"/>


    <resultproperty="clearAccCode"column="clear_acc_code"/>
    <resultproperty="clearAccName"column="clear_acc_name"/>
    <resultproperty="clearAccNo"column="clear_acc_no"/>
    <resultproperty="clearBankCode"column="clear_bank_code"/>
    <resultproperty="clearBankName"column="clear_bank_name"/>
    <resultproperty="clearBankNo"column="clear_bank_no"/>


    <resultproperty="receCode"column="RECE_CODE"/>
    <resultproperty="vouType"column="VOU_TYPE"/>
    <resultproperty="fileName"column="filename"/>
    <resultproperty="filenameBlobid"column="filename_blobid"/>
    <resultproperty="sumCpVoucherId"column="SUM_CP_VOUCHER_ID"/>
    <resultproperty="sumCpVoucherVouNo"column="SUM_CP_VOUCHER_VOU_NO"/>
    <resultproperty="aopinion"column="a_opinion"/>
    <resultproperty="auditorName"column="auditor_name"/>
    <resultproperty="auditorId"column="auditor_id"/>
    </resultMap>

    <resultMapid="cpVoucherResultCheckIn"class="cpVoucher"
    extends="cpVoucherResult">
    <resultproperty="checkDate"column="check_date"/>
    <resultproperty="checkInputor"column="check_inputor"/>
    <resultproperty="auditDate"column="a_date"/>
    </resultMap>


    <selectid="getCpVoucherForCpDvtList"
    resultMap="cpVoucherResultCheckIn"
    parameterClass="elementCondition">
    selectmaster.*fromcp_vouchermasterwhere
    master.sum_cp_voucher_idisnull
    andmaster.is_valid='1'
    <includerefid="ElementCondition.PAYTYPE_CODE"/>
    <includerefid="ElementCondition.StartDate"/>
    <includerefid="ElementCondition.EndDate"/>
    <includerefid="ElementCondition.FUND_CODE_LIKE"/>
    <includerefid="ElementCondition.ORIGIN_CODE_LIKE"/>
    <includerefid="ElementCondition.PROJECT_CODE"/>
    <includerefid="ElementCondition.ORG_CODE"/>
    <includerefid="ElementCondition.B_ACC_CODE_LIKE"/>
    <includerefid="ElementCondition.OUTLAY_CODE_LIKE"/>
    <includerefid="ElementCondition.PAYOUT_CODE_LIKE"/>
    <includerefid="ElementCondition.MANAGE_CODE_LIKE"/>
    <includerefid="ElementCondition.INCEPTDOC_CODE"/>
    <includerefid="ElementCondition.SENDDOC_CODE"/>
    <includerefid="ElementCondition.CoCodeFilter"/>
    <includerefid="ElementCondition.CP_ADJUST_CODE"/>
    <includerefid="ElementCondition.PRINT_ESTATE"/>
    <includerefid="ElementCondition.CLEAR_START_DATE"/>
    <includerefid="ElementCondition.CLEAR_END_DATE"/>
    <isNotNullprepend="AND"property="passwdStatus">
    master.PAY_PWD_STATE=#passwdStatus#
    </isNotNull>
    <isNotNullprepend="AND"property="status">
    <isEqualproperty="status"compareValue="checked">
    is_check='1' and(master.deal_state='3'ormaster.deal_state='4')
    </isEqual>
    <isEqualproperty="status"compareValue="unChecked">
    is_check='0'and(master.deal_state='3'ormaster.deal_state='4')
    </isEqual>
    <isEqualproperty="status"compareValue="sended">
    deal_state='1'
    </isEqual>
    <isEqualproperty="status"compareValue="unSended">
    deal_state='0'ANDa_status_code='3'
    </isEqual>
    <isEqualproperty="status"compareValue="all">
    is_valid='1'
    </isEqual>
    </isNotNull>
    <isNotNullprepend="AND"property="dealState">
    deal_state=#dealState#
    </isNotNull>
    <isNotNullprepend="AND"property="payBankCode">
    pay_bank_code=#payBankCode#
    </isNotNull>
    <isNotNullprepend="AND"property="bankDate">
    TO_DATE(TO_CHAR(BANK_DATE,'YYYY-MM-DD'),'YYYY-MM-DD')=
    #bankDate#
    </isNotNull>
    <includerefid="BusiNumLim.BusiNumLimStr"/>
    <includerefid="ElementCondition.OrderColumns"/>
    </select>

     有没有可能是类冲突了,可以用类名.class.getProtectionDomain().getCodeSource().getLocation()看看这个类在什么位置的,再反编译看看里面有没有那个属性。 

    比如之前部署可一个a.jar,升级之前做了个备份叫a.bak.jar,这样a.jar和a.bak.jar同时存在了

    2020-06-14 21:51:26
    赞同 展开评论
问答分类:
SQL
问答地址: