不能用 select *   因为HQL操作的是POJO类
它不能识别*等符号

解决方案 »

  1.   

    ibatis中是直接写sql,如果有错误的话,那也是你的sql有问题,在数据库端执行以下你的sql测试一下
      

  2.   

            <isNotEmpty prepend="and" property="zczb"> 
                to_char(round(replace(zczb,'万','')))= #zczb# 
            </isNotEmpty>  如果我把  to_char(round(replace(zczb,'万',''))) 换成 "zczb" 是没有问题的确保SQL没有问题
      

  3.   

    <dynamic>一般用于where,你这里不需要xml的字符集是否正确zczb中除了'万'是否有其他字符,比如'3,000.00万'有没有试过把sql在oracle中直接运行
      

  4.   

    sql 在 oracle 中直接运行没有问题的。问题出在 to_char(round(replace(zczb,'万',''))) 与 property="zczb" 对应不上。所以才不能正确的运行现在就是不知道 ibatis 中有没有这样的处理方式 
      

  5.   

    <result property="zczb" column="zczb" /> 这个时候就已经规定好列名叫"zczb",to_char(round(replace(zczb,'万','')))之后就对应不上,不认识你新生成的这个列名了。建议你不要把逻辑写在sql语句中,可以改成:
        <dynamic>
            <isNotEmpty prepend="and" property="zczb">
                zczb= #zczb#
            </isNotEmpty> 
        </dynamic> 
    先把传进来的值在bean中处理好,例如:if(zczb!=null&&!"".equals(zczb)){zczb = zczb+"万"};存入对象,然后再传进来。
      

  6.   

    我 zczb 中的值有: 600万,600.000,6000 三种形式, 所以我用 to_char(round(replace(zczb,'万',''))) 转化成为统一的整形,然后与字符串比较的。所以说在 bean 中,不太好处理啊
      

  7.   

    如果是固定的三种形式,应该很好处理的.to_char(round(replace(zczb,'万','')))这个是列名啊,你处理列名做什么?
      

  8.   

    处理列名是为了条件判断的to_char(round(replace(zczb,'万',''))) = 600 这个我判断为 600 的,这样的话,不管它后面有没有 ‘万’,还是 600.00 形式都可以判断
      

  9.   

    你说好处理的意思是在         <isNotEmpty prepend="and" property="zczb"> 
                zczb = #zczb# or zczb = xxx(#zczb#) 
            </isNotEmpty>  中使用三种条件判断吗?
      

  10.   

    很可能是这个'万'字oracle里面把to_char(round(replace(zczb,'万','')))封装成一个function然后ibatis调用这个试试能否执行
      

  11.   

    ibatis在xml中就是直接执行的sql,你把错误消息发出来看看,还有控制台打印出来的sql是什么样子的