我有两个域名
class Book {
String name
Long id
}
class BookRef {
String name
Long id
String refId
}
在Book
表中,我存储了id=1
,name='Java'
之类的数据。
现在,我可以通过像下面这样的BookRef
来启动Book
def book = Book.get(1)
def bookref = new BookRef()
bookref.id = book.id
bookref.name = book.name
bookref.refId = '1'
bookref.save()
但是我想通过使用bookref
之类的book
对象来初始化params
对象,而不是通过绑定每个属性来实现。
现在,我现在使用该属性进行属性初始化,但是在具有各种属性的域中,这很耗时。
我该怎么做?
答案 0 :(得分:0)
您在这里:
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可能会抛出域包含集合,一对多或具有多个关系字段时,则为例外。