Caused by: org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
### Cause: java.lang.IllegalArgumentException: invalid comparison: java.util.Date and java.lang.String
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at sun.reflect.GeneratedMethodAccessor196.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
... 75 common frames omitted
在mapper.xml文件中,写了如下代码会报上面错误,原因是不能进行String类型(“”)和Date类型(startTime)的比较
<if test='null != startTime and "" != startTime'>
and create_date >= #{startTime}
</if>
最简单粗暴的解决方法是将 “” != startTime 的比较去掉
<if test='null != startTime'>
and create_date >= #{startTime}
</if>
另外注意:create_date 是pg表的字段,timestamp类型,startTime是函数传参,Date类型,两者可直接比较。