MyBatis:无效比较:java.util.Date 和 java.lang.String

问题描述 投票:0回答:2

我在比较 MyBatis 中的日期时遇到如下问题

引起:java.lang.IllegalArgumentException:无效比较:java.util.Date 和 java.lang.String

java 'applyDate' 和 Postgres 'org_info.apply_date' 类型都是 Date

这是我的配置:

<sql id="searchCriteriaSql">
    <where>enter code here
        <if test="applyDate != null &amp;&amp; applyDate != '' ">
            <![CDATA[org_info.apply_date &lt;= #{applyDate}]]>
        </if>
        <if test="ogrNm != null &amp;&amp; ogrNm != '' ">
            <bind name="ogrNmKey"
                value="'%' + ogrNm + '%'" />
            AND ( upper(org_info.org_nm) LIKE upper(#{ogrNmKey}))
        </if>
    </where>
</sql>

根本原因来自

<![CDATA[org_info.apply_date &lt;= #{applyDate}]]>
mybatis
2个回答
1
投票

org.mybatis.spring.MyBatisSystemException:嵌套异常是 org.apache.ibatis.exceptions.PersistenceException:

查询数据库时出错。 原因:java.lang.IllegalArgumentException:无效

比较:java.util.Date 和 java.lang.String

原因:java.lang.IllegalArgumentException:无效比较:java.util.Date 和 java.lang.String

at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:97) ~[mybatis-spring-2.1.0.jar:2.1.0]
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:439) ~[mybatis-spring-2.1.0.jar:2.1.0]
at com.sun.proxy.$Proxy46.selectOne(Unknown Source) ~[?:?]

    <if test="fromDate!=null and fromDate!=''">
        AND a.punch_date &gt;= #{fromDate}
    </if>
    <if test="toDate!=null and toDate!=''">
        AND a.punch_date &lt;= #{toDate}
    </if>

为了解决上述问题,需要更改查询语法。

在此输入代码

<if test="fromDate != null">
            AND a.punch_date &gt;= #{fromDate}
        </if>
        <if test="toDate != null">
            AND a.punch_date &lt;= #{toDate}
        </if>

0
投票

是的。删除 if 条件中的“and fromDate!=''””

© www.soinside.com 2019 - 2024. All rights reserved.