Follow-up for anyone who runs into this... I missed the all-important last
line of code in Andrus' example. Once I put that in, it worked like a
champ!
-----Original Message-----
From: Andrus Adamchik [mailto:andru..bjectstyle.org]
Sent: Friday, July 09, 2004 5:24 PM
To: cayenne-use..bjectstyle.org
Subject: Re: transaction ordering
Admittedly when I posted the code below, I haven't tested it. Now I
created a test case to verify that it works, and, well, it does. [BTW
one extra thing to check before commit, just to make sure, is that
"node.getEntitySorter() instanceof AshwoodEntitySorter"]
So it looks like the problem is indeed in the mapping. You are right
that "to dep pk" is not appropriate. A few other things to check:
1. Any validation warnings in the modeler when you save your mapping
2. Member.parentId has a relationship to PK of Org, not just to some
column.
3. ... finally if nothing works, please post relevant piece of the
DataMap here or open a bug report and attach the map to it, I'll take a
look.
Andrus
On Jul 9, 2004, at 4:52 PM, Newton, Greg P. wrote:
> Hi Andrus,
>
> I tried your suggestion, but no luck. I configured the adapter to
> support
> FK constraints, and I verify right before doing an operation that the
> JDBC
> adapter says "true" when I ask it supportsFkConstraints().
> Unfortunately,
> the dependent rows are still being written first and I'm still getting
> the
> FK constraint violation from MySQL.
>
> Is there anything in the mapping that I should be looking for or
> verifying?
> I read about the "To Dep PK" attribute of DB relationships, but that
> didn't
> really seem to apply as the FK from the master table is not the
> primary key
> of the dependent table.
>
> Greg
>
>
>
> -----Original Message-----
> From: Andrus Adamchik [mailto:andru..bjectstyle.org]
> Sent: Thursday, July 08, 2004 10:54 PM
> To: cayenne-use..bjectstyle.org
> Subject: Re: transaction ordering
>
> Hi Greg,
>
> Ok, the issue here is preconfigured DbAdapter settings. Cayenne orders
> inserts/updates/deletes correctly, however if DbAdapter tells it that
> FK constraints are not supported by the target DB, ordering operation
> is skipped. MySQL adapter was written with MySQL 3.* in mind, so it
> assumes that FK constraints are absent.
>
> In the future we should probably make this configurable via the
> Modeler, but for now you can use these few lines of code on the app
> startup:
>
> DataDomain domain = Configuration.getSharedConfiguration().getDomain();
> DataNode node = domain.getNode("node_name_from_the_project");
> JdbcAdapter adapter = (JdbcAdapter) node.getAdapter();
> adapter.setSupportsFkConstraints(true);
>
> // this line is a bit kludgy,
> // what it does is forcing the node to rebuild its operation sorter
> node.setAdapter(adapter);
>
> Hope this helps.
>
> Andrus
>
>
>
> On Jul 8, 2004, at 10:17 PM, Newton, Greg P. wrote:
>> Hi,
>>
>> I'm using Cayenne to persist an object graph across 2 tables (Org,
>> Member). The Org table has a 1-many relationship with Member. The
>> member table has a FK relationship (parentId) back to the Org table.
>>
>>
>>
>> When I'm doing the initial insert, I first create the Cayenne object
>> representing Org. I then iterate through and create all of the Member
>> objects, adding each to the Member array on the Org object, and
>> setting the Member.parentId to be the primary key of the Org object.
>>
>>
>>
>> Once everything is created, I then commit the changes.
>>
>>
>>
>> The problem I'm running into is a violation of the FK constraint setup
>> on the Member table (back to the primary key of Org). When I looked
>> at the Cayenne logs, what I noticed is that the inserts for the Member
>> table are happening before the insert for the Org table.
>>
>>
>>
>> I'm going to see if I can find a way to defer the constraint
>> evaluation to transaction commit on MySQL (I've done this for Oracle
>> before), but what I'm wondering is if there is any way to influence
>> the order of the inserts. I'd prefer to have the Org row inserted
>> first, followed by all the Member rows.
>>
>>
>>
>> Thanks!
>>
>> Greg
>>
>>
>>
>>
>>
>> <image.tiff>
>>
>>
>>
>>
>>
>> Greg Newton
>> Chief Architect, Enhanced Services
>>
>> Z-Tel Communications, Inc.
>> 3340 Peachtree Rd. NE
>> Suite 2000
>> Atlanta, GA 30326
>>
>> gpnewto..-TEL.com
>>
>> tel:
>>
>> 404-504-0928
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
This archive was generated by hypermail 2.0.0 : Fri Jul 09 2004 - 21:08:42 EDT