ibatis-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Clinton Begin (JIRA)" <ibatis-...@incubator.apache.org>
Subject [jira] Commented: (IBATIS-163) cache not flushing if namespace is used in <sqlMap>
Date Mon, 04 Jul 2005 03:42:10 GMT
    [ 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


Mime
View raw message