1
我正在使用Grails 1.3.6,並且遇到保存級聯問題時出現問題。問題是具有兩個父類的類。什麼我試圖簡化版本是這樣的:Grails/GORM以錯誤的順序保存
class Location {
String city
static hasMany = [authors: Author, publishers: Publisher]
}
class Author {
String name
static belongsTo = [location: Location]
static hasMany = [books: Book]
}
class Publisher {
String name
static belongsTo = [location: Location]
static hasMany = [books: Book]
}
class Book {
String title
static belongsTo = [author: Author, publisher: Publisher]
}
class Srv1Service {
static transactional = true
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)
def b1 = new Book(title: "The Comedians")
a1.addToBooks(b1)
p1.addToBooks(b1)
l1.save()
}
}
如果我運行上面的loadData,圖書實例被保存在發佈實例之前,導致錯誤「不空屬性引用null或瞬時值:adhoc.Book.publisher「。
我已經嘗試了各種不同的方式來定義關係,但很少成功。我已經嘗試過臨時保存,這確實有效,但是我可以看到,父表被更新爲我保存子數據 - 即位置,作者和發佈者都更新到版本1.(並且我想保留代碼儘可能簡單。)我想避免鏈接表。
任何建議感激地收到!