Daniel,

I just re-ran your app after unchecking personID in your join table
(only bookID was set as the primary key).  That causes SQL like this
to be produced:

INFO: DELETE FROM Person_is_author_of_book WHERE bookID = ?
May 12, 2008 2:45:31 PM org.apache.cayenne.access.QueryLogger logQueryParameters
INFO: [bind: 1->bookID:3]

That is incorrect for what you want.  You need to make both a primary
key.  If not, it will delete too many records (potentially) since it
is not qualifying the personID.

/dev/mrg

On Mon, May 12, 2008 at 12:52 PM, Daniel Doppmeier
<[EMAIL PROTECTED]> wrote:
> Hi
>
>  Thanks again. Setting at least one of the attributes as primary key solved
> the problem. As far as I tested, it is not important which of the attributes
> is assigned the primary key, but there has to be at least one PK. The PK
> generation strategy is set to default by the modeller. Any changes to that
> setting do not seem to affect the generated code, so everything seems to
> work just as it should by now.
>
>
>  Michael Gentry schrieb:
>
>
>
> > [followup back to the user list]
> >
> > Hi Daniel,
> >
> > The first time I ran your test application it did indeed crash with
> > the missing WHERE clause (this is on Cayenne 3.x, too).  I went into
> > your Cayenne Model, though, and on your Person_is_author_of_book table
> > (you didn't map it as a class, which is cool since you are flattening
> > it), I checked the PK/Mandatory checkboxes under the Attributes tab
> > for the DbEntity.  Then I re-ran the application and it worked:
> >
> > INFO: DELETE FROM Person_is_author_of_book WHERE bookID = ? AND personID =
> ?
> > May 12, 2008 12:17:06 PM org.apache.cayenne.access.QueryLogger
> > logQueryParameters
> > INFO: [bind: 1->bookID:2, 2->personID:2]
> >
> > Try updating your model and see if it fixes your issue.
> >
> > Thanks,
> >
> > /dev/mrg
> >
> >
> >
>

Reply via email to