Hi Jason,

I spoke too early. Now I see I might have confused version checks with version 
updates. Will do some tests when I have some time.

Regards,
Milosz


> Hi Jason,
> 
> This is what the JPA 1 spec says on this subject:
> 
> "The version attribute is updated by the persistence provider runtime when 
> the object is written to the
> database. All non-relationship fields and properties and all relationships 
> owned by the entity are
> included in version checks."
> 
> To answer your questions:
> 
> > * If I add a new Person to the (SortedSet) people attribute on Address
> > entity x, then merge Address x using my AddressDAO, should the version
> > column value in row x of my address table be incremented?
> > * What if I merge from the other side of the relationship? (i.e.
> > reference an existing Address from a new Person object y and use my
> > PersonDAO to merge the change).
> 
> It does not matter which DAO you use. Address version will not change, only 
> Person version will change because this is the Person who is the owner of the 
> relationship. In a bi-directional one-to-many relationship, the "many" side 
> always owns the relationship (as it has the foreign key column).
>  
> This is how I understand it but did not check whether it actually works like 
> this.
> 
> Greetings,
> Milosz
> 
> 
> > Hi All,
> > 
> > I've got a question about standard entity versioning behavior with
> > OpenJPA 1.2.0 and what I should be seeing in my tables. I'm working on
> > a project with detached entities (for Servlet and Flex/Flash Remoting)
> > and I can't seem to find the information I'm looking for. Not sure if
> > I've got some logic issues or what I'm experiencing is expected
> > behavior.
> > 
> > Let's assume I have two entities, Person and Address. Each has its own
> > database table, and there is a one-to-many relationship between my
> > address and person tables (i.e. many people can reside at one
> > address). No join tables, simply a foreign-key column
> > "primary_address_id" on the person table.
> > 
> > The entities maintain bi-directional relations (i.e. Address entity
> > has SortedSet of people and my Person entity has an address
> > attribute). Cascade merge and persist are enabled on both sides of the
> > relationship. Each table has a version column of type int.
> > 
> > Additionally, I have DAO objects to perform common add, update,
> > delete, and get operations.
> > 
> > Now on to my question(s):
> > 
> > * If I add a new Person to the (SortedSet) people attribute on Address
> > entity x, then merge Address x using my AddressDAO, should the version
> > column value in row x of my address table be incremented?
> > * What if I merge from the other side of the relationship? (i.e.
> > reference an existing Address from a new Person object y and use my
> > PersonDAO to merge the change).
> > 
> > Just trying to get a sense for how the version increment rules are
> > supposed to work with respect to related objects.
> > 
> > Regards,
> > -jmh
> > 
> 

Reply via email to