簡體   English   中英

一對多關系

[英]grails one-to-many relationship

我是新手,需要您的幫助。

我有Author和Book域類:

class Author{

    static hasMany = [book:Book]

    String name
    //....
}

class Book{

    static belongsTo = [author:Author]

    String title
    //....
}

域類的控制器具有“新”操作,可創建新對象並保存在db中。 在我的瀏覽器中,當我輸入... / myApp / author / new?name = myName&...時,在我的數據庫中創建作者對象,但是當我輸入... / myApp / book / new?name = title&..時,它將無法保存圖書對象,可能是因為我還沒有作者對象...

在這種情況下我該怎么辦? 如果有人知道解決方案,請幫助...

您需要輸入要關聯Book實例的作者的ID。 然后,您需要加載作者,並將其與要保存的書相關聯。

我非常確定您不能有一個名為“ new”的控制器動作。 'new'是java / groovy中的保留關鍵字。

def blah = new Blah()

當定義書belongsTo作者,作者hasMany書,書不能未經作者創建的。 通常,您應該執行以下操作:

  • 創建作者
  • 建立書籍
  • 向作者添加書籍
  • 保存作者->級聯書自動保存。

當我看到您描述問題時,我認為您應該放慢腳步,並了解Grails GORM(Groovy對象關系映射)的基礎知識,您可以從“ Grails入門 ”示例開始 ,或閱讀有關以下內容的 三篇 文章: GORM陷阱 他們非常容易理解。

為了進行測試,您可以將一些數據加載到引導程序中:

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 = {}
}

這樣,您的應用程序中將包含作者和書籍。

另外, 本教程對我有很大幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM