Hi, I have question on cache.
There is statement:
<statement id="searchNorm" parameterClass="java.util.HashMap"
resultMap="norm.NormWithValues" cacheModel="normCache">
select t.lname,
t.sname,
t.id,
t.active
from sp_name t
where t.pid = #pid#
<dynamic>
<isNotNull property="normId" prepend="and">
t.id = #normId#
</isNotNull>
</dynamic>
order by t.sname
</statement>
CacheModel is:
<cacheModel id="normCache" type="LRU" readOnly="true">
<flushOnExecute statement="norm.insertNorm"/>
<flushOnExecute statement="norm.updateNorm"/>
<flushOnExecute statement="norm.deleteNorm"/>
<property name="size" value="1000"/>
</cacheModel>
When I execute
public List getNormsAndNormatives(){
List result = new ArrayList();
result = normDao.getNormList(Norm.NORM_PID); //[1]
result.addAll(normDao.getNormList(Norm.NORMATIVS_PID));//[2]
return result;
}
at first time all is right, at [1] I get 3 item in list with pid =
Norm.NORM_PID and at [2] 2 items with pid = Norm.NORMATIVS_PID.
But then I invoke it second time, I get 5 items in a result at [1]
with pid = Norm.NORM_PID and pid = Norm.NORMATIVS_PID, and also get 2
items at [2] with pid = Norm.NORMATIVS_PID.
Is it because caching in iBATIS does not use object identity? I also
try to use OSCache with the same result. Is there any solution for
this problem?
--
Thanks.
mailto:[EMAIL PROTECTED]