代码之家  ›  专栏  ›  技术社区  ›  Constantin

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

  •  2
  • Constantin  · 技术社区  · 16 年前

    我的Grails1.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),列看起来都很好,但我没有在关联表中留下任何记录,也没有错误。应用程序类别表和应用程序表已正确填充。

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

    1 回复  |  直到 16 年前
        1
  •  6
  •   Ted Naleid    16 年前

    好吧,上面的例子中没有表示的一件事是你没有给你的应用实例命名,即使它是一个必需的字段(grails字段是可以为空的:默认情况下是假的,除非你明确地告诉它)。我打赌如果你查一下

    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()
    
    推荐文章