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
<[EMAIL PROTECTED]> 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!