[英]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=1
, name='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
為您提供所有域字段的映射。
請注意 ,此方法適用於String
, boolean
, int
, Long
等原始類型,但是當域具有集合,一對多或具有許多關系字段時,Grails可能會引發異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.