【问题标题】:grails one-to-many relationshipgrails 一对多关系
【发布时间】:2011-03-10 19:34:14
【问题描述】:

我是 grails 新手,我需要你的帮助..

我有 Author 和 Book 域类:

class Author{

    static hasMany = [book:Book]

    String name
    //....
}

class Book{

    static belongsTo = [author:Author]

    String title
    //....
}

域类的控制器具有“新”操作,创建新对象并保存在数据库中。 在我的浏览器中输入 .../myApp/author/new?name=myName&... , 在我的数据库中创建作者对象,但是当我输入 .../myApp/book/new?name=title&.. 它无法保存书籍对象,可能是因为我还没有作者对象...

在这种情况下我该怎么办? 如果有人知道解决方案,请帮助...

【问题讨论】:

    标签: java grails groovy


    【解决方案1】:

    您需要传入要关联 Book 实例的 Author 的 id。然后您需要加载作者,并将其与您要保存的图书相关联。

    我很确定你不能有一个名为“新”的控制器操作。 'new' 是 java/groovy 中的保留关键字。

    def blah = new Blah()
    

    【讨论】:

      【解决方案2】:

      当定义Book belongsToAuthor 和Author hasManybooks 时,没有作者就不能创建Book。通常你应该这样做:

      • 创建作者
      • 创建书籍
      • 将书籍添加到作者
      • 保存作者 -> 级联书籍自动保存。

      当我看到你描述你的问题时,我认为你应该慢一点,看看 Grails GORM(Groovy 对象关系映射)的基础知识,你可以从“Getting started with Grails”的例子开始,或者阅读@ 987654322@。它们非常容易理解。

      【讨论】:

        【解决方案3】:

        出于测试目的,您可以将一些数据加载到引导程序中:

        class BootStrap {
          def init = { servletContext ->
            def writer = new Author(name:"Jane")
            writer.save()
            if(writer.hasErrors()){
               println writer.errors
            }
            def comic = new Book(name: "superman", Author: writer)
            comic.save()
            if(comic.hasErrors()){
               println comic.errors
            }
          }
        def destroy = {}
        }
        

        这样,您的应用中就会有作者和书籍。

        另外this tutorial对我帮助很大。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多