簡體   English   中英

我如何通過使用其他Domain對象來啟動Grails域類

[英]How can i initiate a Grails Domain Class by using others Domain object

我有兩個域名

class Book {

   String name
   Long id
}

class BookRef {

   String name
   Long id
   String refId
}

Book表中,我存儲了id=1name='Java' 現在,我可以通過以下方式獲取Book來啟動BookRef

def book = Book.get(1)

def bookref = new BookRef()
bookref.id = book.id
bookref.name = book.name
bookref.refId = '1'
bookref.save()

但是我想通過使用book對象(如params綁定)而不是通過綁定每個單獨的屬性來初始化bookref對象。

現在,我現在已經使用該屬性進行屬性初始化,但是在具有各種屬性的域中,這非常耗時。

我怎樣才能做到這一點?

干得好:

Book book = Book.get(1)

// Option 1
BookRef bookref = new BookRef(book.properties)
bookref.refId = '1'
bookref.save()

// Option 2
BookRef bookref = new BookRef()
bookref.properties = book.properties
bookref.refId = '1'
bookref.save()

基本上,在Grails中,任何domainInstance.properties為您提供所有域字段的映射。

請注意 ,此方法適用於StringbooleanintLong等原始類型,但是當域具有集合,一對多或具有許多關系字段時,Grails可能會引發異常。

暫無
暫無

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

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