Grails 1.3.7 с MySQL 5.5
Либо я должен что-то делать с умом, либо это связано с проблемами Грааля http://jira.grails.org/browse/GRAILS-5804 и http://jira.grails.org/browse/GRAILS-4121 и аналогичными.У меня есть:
class Author {
String name
static hasMany = [books: Book]
static constraints = {
books cascade: 'all-delete-orphan'
}
String toString() {
return name
}
}
class Book {
String title
static belongsTo = [author: Author]
static constraints = {
}
String toString() {
return title
}
}
Bootstrap:
def a = new Author(name: 'Author0')
a.save(flush: true, failOnError: true)
def b = new Book(title: 'Book0')
a.addToBooks(b).save(flush: true, failOnError: true)
class AuthorController {
def index = {
println("Controller code: " + "Old books by author: " + Author.get(1).books)
def author = Author.findByName("Author0")
def oldBooks = []
oldBooks += author.books // to avoid ConcurrentModificationException
oldBooks.each {
author.removeFromBooks(it)
}
author.save(flush: true, failOnError: true)
println("Controller code: " + "New books by author: " + Author.get(1).books)
render("All done!")
}
}
Но когда я перехожу на localhost: 8080 / foo / author / index, я получаю 'свойство not-null, ссылающееся на нулевое или временное значение: foo.Book.author' во время сохранения()
Я на самом деле не знаю GORM-внутренностей или Hibernate (прокси против незафиксированных экземпляров), я пробовал все комбинации, используя 'get' вместо 'find', но не могу заставить это работать.Может кто-нибудь объяснить, как это должно работать?