You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Clinton Begin (JIRA)" <ib...@incubator.apache.org> on 2005/07/04 05:42:10 UTC

[jira] Commented: (IBATIS-163) cache not flushing if namespace is used in

    [ 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