[ http://issues.apache.org/jira/browse/IBATIS-251?page=all ] Clinton Begin closed IBATIS-251: --------------------------------
Resolution: Invalid Assign To: Clinton Begin This is already handled by using the readOnly and/or serialize flags Page 32 of the user guide. http://internap.dl.sourceforge.net/sourceforge/ibatisdb/iBATIS-SqlMaps-2.pdf For what you're doing, I'd suggest readOnly="false" and serialize="true" Remember, all of your beans will need to implement Serializable. Cheers, Clinton > Beans in cache can be changed without persistence > ------------------------------------------------- > > Key: IBATIS-251 > URL: http://issues.apache.org/jira/browse/IBATIS-251 > Project: iBatis for Java > Type: Bug > Components: SQL Maps > Versions: 2.1.6 > Environment: Resin 3/Linux/Spring > Reporter: Reuben Firmin > Assignee: Clinton Begin > > The following code illustrates the problem: > Foo foo1 = dao.getFoo(fooId); > foo1.setBah(true); > try { > dao.updateFoo(foo1); > } catch (Exception e) { > Foo foo2 = dao.getFoo(fooId); > if (foo2.getBah()) > System.err.println("The bug!"); > } > Assume the dao method throws an exception due to validation failure, prior to > any calls being made to the database. > The problem is that because a reference foo1 is obtained from the dao (which > uses the built in caching), we are now pointing to the same bean that is in > the cache. So, even if we don't persist foo1 to the database, the cached copy > of foo1 contains the mutated properties; system wide, our change is instantly > propagated. This is IMO a pretty serious issue. > A fix would be to make the cache return cloned beans, or have the cache build > new beans based on the setter/getter properties; or similar. In any case, the > desired effect is that the bean that the cache references NOT be mutatable by > the rest of the system. -- 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