我有一个查询,首次启动时返回零行:
<select id="getParams" parameterType="map" resultMap="ParamsResultMap">
SELECT ID, GROUPS, TEMPLATES, DATE_FROM, DATE_TO
FROM MY_FILTERS
WHERE ID = #{id}
</select>
<resultMap id="ParamsResultMap" type="my.domain.ParamsVO">
<result column="ID" property="id"/>
<result column="GROUPS" property="groups"/>
<result column="TEMPLATES" property="templates"/>
<result column="DATE_FROM" property="dateFrom" jdbcType="TIMESTAMP"/>
<result column="DATE_TO" property="dateTo" jdbcType="TIMESTAMP"/>
</resultMap>
没关系,因为我想在java中管理它:
ParamsVO params = myRepository.getParams(id);
if (params == null) {
...
}
但我得到例外:
org.springframework.jdbc.UncategorizedSQLException: Error setting null for parameter #4 with JdbcType OTHER .
Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property.
Cause: java.sql.SQLException: Invalid column type ; uncategorized SQLException for SQL [];
SQL state [null]; error code [17004];
我尝试使用jdbcType = "DATE"
而没有jdbcType,结果类似。
我的问题是处理在MyBatis上返回零行的查询的正确方法是什么?
答案 0 :(得分:0)
试试这种方式,
<result column="DATE_TO" property="dateTo" jdbcType="DATE" javaType="java.util.Date"/>
还需要检查并更新你的JDBC jar文件。检查ojdbc.jar here的兼容性(我认为你至少应该需要ojdbc6.jar)。如需进一步检查,如果您已在mybatis配置xml文件中声明如此
<settings>
<setting name="jdbcTypeForNull" value="OTHER" />
</settings>
然后改变那样
<settings>
<setting name="jdbcTypeForNull" value="NULL" />
</settings>