Hello, I found that the cache doesn't behave exactly as I'd have expected;
I'm using an LRU cache. Is there a way that I can configure it to behave
as I'd like?

I have a hierarchical object tree, mapped using ResultMaps:

<select id="getA" ... resultMap="Map_A" cacheModel="Cache_A"> ...

<resultMap id="Map_A">
   <result property="B" column="a_id" select="B.getB">
...

I am caching A. It looks like all of the Bs that belong to A are also
cached as part of this, such that if I change a property of B directly
(without saving A -- the "saveA" operation causes the cache to flush) I
cannot access this new B information by calling "getA" again (since the
old B is stored in the cache).

I can get around this by adding all of the mutateB..Z statements to A's
cachemodel, but this is inelegant, since I'm now mixing namespaces, and
could lead to bugs creeping into the project, since developers may not
realize that there is a cache at A when they are adding the mutateN
statement. I would like instead for B..Z to have their own cachemodel, and
for A to get its Bs from B's cachemodel instead of from within its own.
That way, A's cachemodel can worry only about A mutators; B's can worry
about B mutators, etc etc.

Does this make sense, and is it possible to do this using current syntax?

Thanks
Reuben



Reply via email to