如何使用其他域对象启动 Grails 域 Class
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
table中,我存储了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()
但我想通过使用像 params
绑定一样的 book
对象来启动 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 可能会在域具有集合、一对多或具有多关系字段时抛出异常。
我有两个域名
class Book {
String name
Long id
}
class BookRef {
String name
Long id
String refId
}
在Book
table中,我存储了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()
但我想通过使用像 params
绑定一样的 book
对象来启动 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 可能会在域具有集合、一对多或具有多关系字段时抛出异常。