我正在尝试使用缓存模型来缓存过程返回的结果。但是,每次我访问数据库时,它都会存储“ SERIALIZABLE NULL OBJECT”,而第二次访问数据库时,它会显示高速缓存未命中并存储“ SERIALIZABLE NULL OBJECT”。我正在使用iBatis 2并调用procedure.XML文件,如下所示:
<cacheModel id="TestCache" type="MEMORY">
<flushInterval seconds="600"/>
<property value="10" name="size"/>
<property name="reference-type" value="WEAK"/>
</cacheModel>
<parameterMap id="getParameters" class="map">
<parameter property="result" javaType="com.package.dto.SomeDTO" jdbcType="ORACLECURSOR" mode="OUT" typeHandler="com.dao.SomeResultHandler"/>
<parameter property="userId" jdbcType="NUMERIC" mode="IN" />
<parameter property = "applicationDate" jdbcType="DATE" mode="IN"/>
</parameterMap>
<procedure id="getUserDetails" parameterMap="getParameters" cacheModel="TestCache">
{call pkcp_BPS.Get_User_Details (?,?,?)}
</procedure>
请在您的cacheModel元素内添加flushOnExecute:
<flushOnExecute statement=""/>