You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ibatis.apache.org by "Amad Fida (JIRA)" <ib...@incubator.apache.org> on 2005/03/22 22:48:21 UTC
[jira] Created: (IBATIS-93) flushOnExecute doesn't work when statement executed in batch
flushOnExecute doesn't work when statement executed in batch
------------------------------------------------------------
Key: IBATIS-93
URL: http://issues.apache.org/jira/browse/IBATIS-93
Project: iBatis for Java
Type: Bug
Components: SQL Maps
Versions: 2.0.9
Environment: Java 1.4.2 Tomcat 5 Window 2003 SQL Server 2000 with SP3a
Reporter: Amad Fida
I have my sql map defined as follows,
<cacheModel id="roleCache" type="LRU" readOnly="false" serialize="true">
<flushInterval hours="24"/>
<flushOnExecute statement="insertRole"/>
<flushOnExecute statement="updateRole"/>
<flushOnExecute statement="deleteRole"/>
<flushOnExecute statement="deleteAllRoles"/>
<property name="size" value="200"/>
</cacheModel>
<insert id="insertRole">
INSERT INTO ROLES
(roleKey, roleName, roleDescription, roleComments, createUser,
updateUser, createDate, updateDate)
VALUES
(#roleKey#, #roleName#, #roleDescription#, #roleComments#,
#createUser#, #updateUser#, #createDate#, #updateDate#)
</insert>
there are other statements as well but this will explain my problem.
When I execute "insertRole" with a SqlMapExecutor.executeBatch(), my
cache doesn't get flush. Is not suppose to do that or am I missing
something.
I am using it along with springframework and here is my code snippet,
getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
String statementId = "updateRole";
if (isNew) {
statementId = "insertRole";
}
executor.startBatch();
Iterator iter = roles.iterator();
while (iter.hasNext()) {
Role role = (Role)iter.next();
executor.update(statementId, role);
}
int rowsaffected = executor.executeBatch();
if (logger.isDebugEnabled()) {
logger.debug("Rows afftected by batchUpdateRoles (" +
(isNew ? "isnert" : "update") + ") : " +
rowsaffected);
}
return null;
}
});
--
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
-
If you want more information on JIRA, or have a bug to report see:
http://www.atlassian.com/software/jira
[jira] Closed: (IBATIS-93) flushOnExecute doesn't work when statement executed in batch
Posted by "Clinton Begin (JIRA)" <ib...@incubator.apache.org>.
[ http://issues.apache.org/jira/browse/IBATIS-93?page=all ]
Clinton Begin closed IBATIS-93:
-------------------------------
Fix Version: 2.1.0
Resolution: Cannot Reproduce
Assign To: Clinton Begin
Can't reproduce this. 4 unit tests verify this functionality works.
> flushOnExecute doesn't work when statement executed in batch
> ------------------------------------------------------------
>
> Key: IBATIS-93
> URL: http://issues.apache.org/jira/browse/IBATIS-93
> Project: iBatis for Java
> Type: Bug
> Components: SQL Maps
> Versions: 2.0.9
> Environment: Java 1.4.2 Tomcat 5 Window 2003 SQL Server 2000 with SP3a
> Reporter: Amad Fida
> Assignee: Clinton Begin
> Fix For: 2.1.0
>
> I have my sql map defined as follows,
> <cacheModel id="roleCache" type="LRU" readOnly="false" serialize="true">
> <flushInterval hours="24"/>
> <flushOnExecute statement="insertRole"/>
> <flushOnExecute statement="updateRole"/>
> <flushOnExecute statement="deleteRole"/>
> <flushOnExecute statement="deleteAllRoles"/>
> <property name="size" value="200"/>
> </cacheModel>
> <insert id="insertRole">
> INSERT INTO ROLES
> (roleKey, roleName, roleDescription, roleComments, createUser,
> updateUser, createDate, updateDate)
> VALUES
> (#roleKey#, #roleName#, #roleDescription#, #roleComments#,
> #createUser#, #updateUser#, #createDate#, #updateDate#)
> </insert>
> there are other statements as well but this will explain my problem.
> When I execute "insertRole" with a SqlMapExecutor.executeBatch(), my
> cache doesn't get flush. Is not suppose to do that or am I missing
> something.
> I am using it along with springframework and here is my code snippet,
> getSqlMapClientTemplate().execute(new SqlMapClientCallback() {
> public Object doInSqlMapClient(SqlMapExecutor executor) throws SQLException {
> String statementId = "updateRole";
> if (isNew) {
> statementId = "insertRole";
> }
> executor.startBatch();
> Iterator iter = roles.iterator();
> while (iter.hasNext()) {
> Role role = (Role)iter.next();
> executor.update(statementId, role);
> }
> int rowsaffected = executor.executeBatch();
> if (logger.isDebugEnabled()) {
> logger.debug("Rows afftected by batchUpdateRoles (" +
> (isNew ? "isnert" : "update") + ") : " +
> rowsaffected);
> }
> return null;
> }
> });
--
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