我有两个域名
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
这样的对象绑定(bind)不是通过绑定(bind)每个单独的属性。目前,我已经使用属性来初始化属性,但是在具有各种属性的域中,这很耗时。
我怎样才能做到这一点?
最佳答案
干得好:
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
为您提供所有域字段的 map 。请注意 , 这种方法适用于像
String
这样的原始类型, boolean
, int
, Long
等等,但是当域具有集合、一对多或具有多关系字段时,Grails 可能会抛出异常。
关于grails - 如何使用其他域对象启动 Grails 域类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57388610/