Folks !
I am getting foreign key violation error persisting a simple hierarchy of
objects which looks like below:
class SearchTask {
collection of Search Log {
Collections of A
Collection of B
Collection of C
(A, B, C have one more layer of collections)
}
}
class FreeSearch derived from Search Task using a discriminator {
collection of Sources
}
Cascades are all set to ALL (on both sides of one-to-many relationships).
I expect it to persist SearchTask/FreeSearch first - generate its primary
key and substitute them in foreign key attributed of SearchLog and further
down. openJPA instead tries to insert A, B C etc before SearchLog. And
Sources before FreeSearch etc. As if it doesn't understand the hierarchy.
I am initializing collections in the constructors (using new ArrayList) and
populate them later. I have printed the graph to make sure everything is as
I would expect. Primary keys are generated by
OpenJPA correctly. It even sets foreign key values correctly. SQL logs shows
its a statement ordering issue.
When I completely dumb down the model and drop foreign key constraints then
it works - but only sometimes. Generated SQL log shows statement order is
random at best. Retry works sometimes. I haven't dropped all constraints and
tried persisting entire model. All my foreign keys are not null and I don't
want to change my design.
Even when I do manual persist walking down the tree in right order, inserts
are done in random order (even though I have read OpenJPA does not
reordering of its own) and fails because of foreign keys.
I am running OpenEJB 3.0 embedded inside Tomcat which no change to original
configuration. Database is Postgres 8.1.
What am I missing ?
Any help would be appreciated.
thank you,
-Sanjay Kumar
--
View this message in context:
http://www.nabble.com/Foreign-key-violation-while-persisting---statement-order-issue.-tp18062156p18062156.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.