多对多不坚持gorm/grails应用程序

dan*_*anb 2 grails many-to-many grails-orm

我的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()
Run Code Online (Sandbox Code Playgroud)

创建了正确的表(app,app_category和app_categories)并且列都显示正常,但我不会在关联表中找到任何记录而且没有错误.app_category表和app表已正确填充.

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

Ted*_*eid 6

好吧,上面示例中没有表示的一件事是你没有为你的App实例命名,即使它是必填字段(grails字段可以为空:默认为false,除非你明确告诉它).我打赌,如果你检查

app.hasErrors()
Run Code Online (Sandbox Code Playgroud)

在你的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()
Run Code Online (Sandbox Code Playgroud)