当我用$value$的时候会报
org.apache.cxf.interceptor.Fault: Marshalling Error: java.sql.SQLException is not known to this context只是我查询的时候group by了把这个字段,但是我下面还有个条件也是用的$$并没有报错。<select id="allOrgTrandeInfoCount" parameterClass="java.util.HashMap"  resultClass="int">
select count(*)  from (select 1 from query.v_allorg_trace_test a
where 1=1 

<isNotEmpty prepend="and" property="outCDNo">
      a.OUTCDNO in ($outCDNo$)
</isNotEmpty>

<isNotEmpty prepend="and" property="inCDNo">
    a.INCDNO in ($inCDNo$) 
</isNotEmpty>

<isNotEmpty prepend="and" property="trdDateStart">
  a.TRDDATE  &gt;= #trdDateStart#
</isNotEmpty>

<isNotEmpty prepend="and" property="trdDateEnd">
  a.TRDDATE  &lt;= #trdDateEnd#
</isNotEmpty>

<isNotEmpty prepend="and" property="trdTimeStart">
  a.TRDTIME  &gt;= #trdTimeStart#
</isNotEmpty>

<isNotEmpty prepend="and" property="trdTimeEnd">
  a.TRDTIME  &lt;= #trdTimeEnd#
</isNotEmpty>
<!--
<isNotEmpty prepend="and" property="catName">
  a.CAT_NAME = #catName#
</isNotEmpty>


<isNotEmpty prepend="and" property="proAm">
  a.PRO_AM = #proAm#
</isNotEmpty>
-->

<isNotEmpty prepend="and" property="terminalId">
  a.TERMINAL_ID = #terminalId#
</isNotEmpty>

<isNotEmpty prepend="and" property="sNo">
  a.S_NO = #sNo#
</isNotEmpty>

<!--
<isNotEmpty prepend="and" property="totalAm">
  a.TOTAL_AM = #totalAm#
</isNotEmpty>
-->
<isNotEmpty prepend="and" property="pasm">
  a.PASM = #pasm#
</isNotEmpty>

<isNotEmpty prepend="and" property="orgList">
(a.OUT_BANK_ID in ($orgList$) or a.IN_BANK_ID in ($orgList$) )
</isNotEmpty>
  group by a.OUTCDNO, a.inCDNo,a.pasm,a.cat_Name,a.TERMINAL_ID,a.S_NO, a.TOTAL_AM ,a.pro_Am,a.total_Am,a.trdDate,a.trdTime,a.data_date) </select>代码是这样的。

解决方案 »

  1.   

    建议把sql打印出来看看,是否你的聚合出了问题。
      

  2.   

    记得value在ibatis里面代表说,当前用的是个简单参数,也就是直接把整个参数拿来使用就行了,也就是定义中可以不需要指定参数了。但你指定的参数类型又说它是个HashMap,估计iBatis就当场SB了。
      

  3.   

    无语学这个还高手?
    hibernate会的话,这个一晚
      

  4.   

    这个还是把sql打印出来吧   $# 这个区分一下
      

  5.   

    不到万不得已的情况 
    不要使用$ 
    这样有SQL注入的危险
      

  6.   

    resultClass="int" 改为 resultClass="java.lang.Integer"> 试试。
      

  7.   

    resultClass="int" 这个是基本类型,不是引用类型,应该是这里的问题。
    resultClass指待执行后结果封装为那种对象。
      

  8.   

    #value#和$value$是不一样的 比如说 int 和string 类型的   用##都可以,
    但是如果用$value$就不行了  因为如果是string类型的话##会根据数据类型自动加上"",而$$不会。  你可以试试看。祝成功~