Хорошо, поэтому ключ в том, что сохранения каскадно переходят от родителей к детям.У вас есть проблема, когда дело доходит до Book, потому что Book является дочерним для издателя и автора.GORM пытается сохранить Location, Location пытается сохранить Author, Author пытается сохранить Book НО , сохранение не удается, поскольку в Book есть временный издатель.
Попробуйте добавить промежуточное сохранение непосредственно перед созданием книги:
def loadData() {
def l1 = new Location(city: "London")
def a1 = new Author(name: "Graham Greene")
l1.addToAuthors(a1)
def p1 = new Publisher(name: "Some Press")
l1.addToPublishers(p1)
l1.save() // add this save
def b1 = new Book(title: "The Comedians")
a1.addToBooks(b1)
p1.addToBooks(b1)
l1.save()
}
Я создал локальный проект Grails с добавлением классов вашего домена в это сохранение.Каскадирование работает так, как вы ожидаете.