2009-05-24 48 views
2

我有大約在我的Grails以下1.1應用許多一對多在格姆/ Grails的應用程序不能堅持

class AppCategory { 
    static belongsTo = App 
    static hasMany = [ apps: App ] 
    String name 
} 

class App { 
    static hasMany = [ categories: AppCategory] 
    String name 
} 

App app = new App() 
AppCategory appCat = AppCategory.findByName('blah') 
app.addToCategories(appCat) 
app.save() 

正確的表(應用程序,APP_CATEGORY和app_categories)創建和柱都顯得細,但我沒有結束關聯表中的任何記錄並且沒有錯誤。 app_category表和應用表正確填充。

我是否需要手動管理的對應表的域對象?或者更好的是,我只是錯過了一些完全明顯的東西?

回答

6

嗯,這是不是在你的例子代表一件事上面的是你沒有你的App實例起一個名字,儘管這是一個必填字段(Grails的領域可以爲空:false默認情況下,除非你明確地告訴否則)。我敢打賭,如果你檢查

app.hasErrors() 

您app.save()後,你會看到它確實有錯誤,你可以在app.errors收集列表。

否則,你有什麼是好的,這個代碼工作對我罰款與域對象你有以上:

AppCategory appCat = new AppCategory(name: "blah")  
appCat.save()  
assert !appCat.hasErrors() 


App app = new App(name: "testApp") 
app.addToCategories(appCat)  
app.save()  
assert !app.hasErrors()