When I add an object on the "one" side of a 1:N relationship (ie: adding a book), the cached "many" (ie: a library) side is out of synch.

In pseudocode:
1. Access Library 1 and count the number of books (it's now cached)
2. Create a new book, set the book.library_id=1
3. PersistenceBroker.store(book) (book is now inserted)
4. Count the number of books in Library 1

Problem! In step 4, the number of books has not been updated... it's the cached value from step 1, not the correct value.

What is the proper way to deal with this issue? Are we supposed to flush the cache on every write? Or, manually update all the related objects? Or what?

PS: In step 2, I could set the book.library object instead of the FK. Same result.

--------------------
Scenario:
Let's say I have two tables Library and Book, with a FK to Library in Book (therefore, this is a 1:N from Library to books)


Data objects:
public class Library {
 Integer id; // PK
 Collection books; // lazy loaded (Proxy=true)
}

public class Book {
 Integer id;
 Integer library_id; // FK to Library
 Library library;
}

Repository_User.xml:
<class-descriptor
 class="Book"
 table="book">
 <field-descriptor
    name="id"
    column="id"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
    sequence-name="bookid"
 />
 <field-descriptor
    name="library_id"
    column="library_id"
    jdbc-type="INTEGER"
 />
 <field-descriptor
    name="name"
    column="name"
    jdbc-type="VARCHAR"
 />
 <reference-descriptor
   name="Library"
   class-ref="library"
   auto-retrieve="true"
   auto-update="link"
   auto-delete="false">
   <foreignkey field-ref="library_id" />
 </reference-descriptor>
</class-descriptor>

<class-descriptor
 class="Library"
 table="library">
 <field-descriptor
    name="id"
    column="id"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
    sequence-name="libraryid"
 />
 <field-descriptor
    name="name"
    column="name"
    jdbc-type="VARCHAR"
 />
 <collection-descriptor
   name="collbooks"
   element-class-ref="Book"
   auto-retrieve="true"
   auto-update="link"
   auto-delete="false"
   proxy="false">
   <inverse-foreignkey field-ref="library_id"    />
 </collection-descriptor>
</class-descriptor>

_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today - it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to