I tried all those suggestions including the properties:
openjpa.jdbc.SchemaFactory=native(ForeignKeys=true)
openjpa.jdbc.MappingDefaults=ForeignKeyDeleteAction=restrict,
JoinForeignKeyDeleteAction=restrict
openjpa.jdbc.UpdateManager=operation-order
I tried many different permutations of cascading but had no luck, and in fact I
didn't want to say it but it looks like the fault is random, or rather that the
operations are executed randomly either one way (which breaks one reference) or
another way (which breaks a different reference) but there is no way I can force
them to execute the right way.
Regards
Adam
Miłosz Tylenda on 27/06/09 08:34, wrote:
Have you tried the ideas presented in that post [1] and FAQ [2]?
[1]
http://n2.nabble.com/Inconsistent-behaviour-with-Bi-directional-One-to-Many-Mapping.-tp2570464p2570464.html
[2] http://openjpa.apache.org/faq.html
Hi All,
I have played with this all day and managed to find one work-around but I can't
really live with it for long - I hope I'm just missing something in my config
but I can't work out what:
I have four entities, a grandparent, two parents (each with many-to-one with the
grandparent) and one grandchild (related many-to-one to both parents). (And all
are bi-directional).
OpenJPA 1.2 is having problems ordering the inserts and updates when I'm adding
new entities and seems to ignore my metadata.
Despite setting nullable=false insertable=true updatable=false on the grandchild
join-column definition, I see grandchild is inserted first without the parent
foreign keys and then next the parent is inserted, after which OpenJPA issues an
UPDATE on the grandchild. This breaks the referential integrity constraints when
the INSERT executes.
Perhaps the cascading is important? I have tried cascading only through one
parent from grandparent to grandchild, and then through the other, and also by
allowing both to cascade (cascade-all) but only one configuration works which is
when I'm persisting everything. If I try it with an existing grandparent, I
can't get it to work.