小弟最近项目中用到了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)
求指导啊,已经困扰好多天了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
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同时存在了