Hi!
I'm sorry I made a mistake there. When I was posting the code I was
leaving out some lines of comment and I seem to have lost one line of
code meanwhile.
So here is the (slightly changed) code again. This time free of typing
errors, I hope:
DataContext context = DataContext.createDataContext();
// create a book
Book book1 = (Book) context.newObject(Book.class);
book1.setTitle("The secret life of Donald D");
// create a person
Person author1 = (Person) context.newObject(Person.class);
author1.setName("Huey");
// asign person as author to the book
author1.addToBooks(book1);
// save objects to DB
context.commitChanges();
// remove the book from the author's list of book and commit changes
author1.removeFromBooks(book1);
context.commitChanges();
The problem is still the same as described earlier.
Michael Gentry schrieb:
> Hi Daniel, I'm not sure if you've solved your problem yet, but from
> the code you posted, I don't see where you established any
> relationship between book1 and author1/author2. You had objects with
> no relationship defined, so you can't actually remove book1 from
> author1.
>
> /dev/mrg
>
>
> On Tue, May 6, 2008 at 4:17 AM, Daniel Doppmeier
> <ddoppme..ebitec.uni-bielefeld.de> wrote:
>
>> Hello everyone!
>>
>> I am new to cayenne and experiencing some problems, when modelling a
>> many-to-many relationship. After I could not solve the problem for an
>> application I am writing at the moment, I set up the following example
>> application, which is producing the same problems:
>>
>> I modelled a small bookstore application, with two tables "Book" and
>> "Person". After that I created a join table "Person_is_author_of_book", to
>> map from "Person" entries to "Book" entries. On the object side of the
>> application, this would mean, that every book may have several authors,
>> whereas one author may have written more than one book.
>>
>> Inserting and fetching data from the DB seems to work just fine, but when it
>> comes to deletion there occures my problem. This is what happens in my code:
>>
>> DataContext context = DataContext.createDataContext();
>> Book book1 = (Book) context.newObject(Book.class);
>> book1.setTitle("The secret life of Donald D");
>>
>> Person author1 = (Person) context.newObject(Person.class);
>> author1.setName("Huey");
>> Person author2 = (Person) context.newObject(Person.class);
>> author2.setName("Dewey");
>>
>> context.commitChanges();
>>
>> author1.removeFromBooks(book1);
>> context.commitChanges();
>>
>> Everything is fine until the second commitChanges(), when I try to delete
>> book1 from author1's list.
>> This is what the logger says about it:
>>
>> INFO QueryLogger: --- will run 1 query.
>> INFO QueryLogger: --- transaction started.
>> INFO QueryLogger: DELETE FROM Person_is_author_of_book WHERE
>> INFO QueryLogger: *** error.
>>
>> As you can see, there is missing some SQL syntax after the WHERE clause.
>> Does anybody have an idea, what may cause this malformed SQL?
>>
>> I am using the latest stable cayenne version 2.0.4, MySQL 5.0.51a-3ubuntu5
>> and java "1.6.0_06"
>>
>>
>> Thanks a lot for any help!
>>
>>
>>
>
>
This archive was generated by hypermail 2.0.0 : Fri May 09 2008 - 18:01:13 EDT