[ 
http://issues.apache.org/jira/browse/IBATIS-163?page=comments#action_12314979 ] 

Clinton Begin commented on IBATIS-163:
--------------------------------------


Actually because they're all in the same namespace, they should be able to 
refer to each other without the namespace prefix.

So the whole thing shoud read...

<sqlMap namespace="User">

<cacheModel id="user-cache" type="LRU" readOnly="false" serialize="true">
<flushInterval hours="24"/>
<flushOnExecute statement="addUser"/>
<flushOnExecute statement="removeUser"/>
<flushOnExecute statement="addEmail"/>
<flushOnExecute statement="removeUserEmails"/>
<property name="cache-size" value="1000"/>
</cacheModel>

<!-- removed resultmap, not relevant to the example-->

<select id="listUsers" resultMap="list-users-result" cacheModel="user-cache">
SELECT
UID,
AGE,
FIRSTNAME,
LASTNAME
FROM
USERS
</select>

<delete id="removeUser" parameterClass="java.lang.Long">
DELETE FROM
USERS
WHERE
UID = #value#
</delete>
</sqlMap> 

> cache not flushing if namespace is used in <sqlMap>
> ---------------------------------------------------
>
>          Key: IBATIS-163
>          URL: http://issues.apache.org/jira/browse/IBATIS-163
>      Project: iBatis for Java
>         Type: Bug
>   Components: SQL Maps
>  Environment: OS - Windows XP
>     Reporter: Satish Rao

>
> I have the following xml
> <sqlMap namespace="User">
>       <cacheModel id="user-cache" type="LRU" readOnly="false" 
> serialize="true">
>               <flushInterval hours="24"/>
>               <flushOnExecute statement="User.addUser"/>
>               <flushOnExecute statement="User.removeUser"/>
>               <flushOnExecute statement="User.addEmail"/>
>               <flushOnExecute statement="User.removeUserEmails"/>
>               <property name="cache-size" value="1000"/>
>       </cacheModel>
>       <resultMap id="list-users-result" 
> class="com.fmr.gift.strutsplus.domain.User">
>               <result property="id" column="UID"/>
>               <result property="age" column="AGE"/>
>               <result property="firstname" column="FIRSTNAME"/>
>               <result property="lastname" column="LASTNAME"/>
>               <result property="eventsJoined" column="UID" 
> select="getEventsJoinedByUserId"/>
>               <result property="emails" column="UID" 
> select="getEmailsbyUserId"/>
>       </resultMap>
>       <select id="listUsers" resultMap="list-users-result" 
> cacheModel="user-cache">
>           SELECT 
>               UID,
>               AGE,
>               FIRSTNAME, 
>               LASTNAME
>           FROM 
>               USERS
>       </select>
>       <delete id="removeUser" parameterClass="java.lang.Long">
>           DELETE FROM 
>               USERS
>           WHERE 
>               UID = #value#
>       </delete>
> </sqlMap>
> The caching works fine for select. But when I delete a user, I expected the 
> cache to be be flushed because of the following entry in cache model - 
> <flushOnExecute statement="removeUser"/>. This does not happen. When I 
> perform removeUser operation, the user list is displayed again and shows the 
> user id that was deleted.
> I removed namespace="User" from <sqlMap> and also the 'User' prefix on 
> <flushOnExecute> and the flushing worked fine.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to