-1
的Grails 1.3.7與MySQL 5.5removeFrom與級聯全刪除,孤兒不工作
要麼我必須做一些腦死亡,或者Grails的問題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!")
}
}
但是,當我瀏覽到本地主機:在保存過程中(:8080 /富/作家/指數我得到一個「foo.Book.author非空屬性引用null或瞬時值」 )
我並不真正瞭解GORM內部結構或Hibernate(代理與非代理實例),我嘗試了使用'get'而不是'find'的所有組合,但無法使其工作。有人可以解釋這是如何工作的嗎?
嗯我試着切換報價,但它沒有幫助。也嘗試切換到hsqldb,這也沒有做任何事情...... – 2011-04-19 20:47:29
@約翰:其實,這不是報價。請注意「靜態映射=」和「靜態約束= ...」 – 2011-04-20 00:48:41
Doh!你當然是對的。絕對是在腦死亡的範疇。我想知道我是否可以從Stackoverflow關閉/刪除這個問題 - 不會向社區添加任何內容。 – 2011-04-20 08:18:42