class Author { static hasMany = [ books : Book ] String name } class Book { static belongsTo = Author Author author String title }
The belongsTo reference ensures that saves, updates, and deletes are cascaded. All the information that I have found provides an example to save your domain classes like:
new Author(..) .addToBooks(new Book(..)) .save()
During recent development, I was creating an integration test on a model very similar to this and kept seeing errors that stated "object references an unsaved transient instance - save the transient instance before flushing". Pouring over my code, everything looked correct - all the relationships were correctly defined, it was simply refusing to save properly. In the end I got lucky with a google search and found that there is a bug in 1.1 that only affects integration tests (and is fixed in 1.2RC1). If you update your save to:
new Author(..) .addToBooks(new Book(..)) .save(flush:true, validate:false)
the save will cascade correctly.
No comments:
Post a Comment