2

我的 grails 1.1 应用程序中大致有以下内容

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、app_category 和 app_categories)并且列看起来都很好,但我最终没有在关联表中得到任何记录,也没有错误。app_category 表和 app 表已正确填充。

我是否需要手动管理关联表的域对象?或者更好的是,我只是错过了一些完全明显的东西吗?

4

1 回答 1

6

好吧,上面的示例中没有表示的一件事是,您没有为 App 实例命名,即使它是必填字段(grails 字段默认为 nullable: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()
于 2009-05-24T22:52:22.520 回答