如何使用其他域对象初始化Grails域类
我有两个域名如何使用其他域对象初始化Grails域类,grails,groovy,gorm,grails-domain-class,Grails,Groovy,Gorm,Grails Domain Class,我有两个域名 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
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可能会引发异常。这里:
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可能会抛出异常。亲爱的Shashank,谢谢您的回答。我现在已经使用了属性到属性的初始化,但是在一个具有巨大属性的域中,这非常耗时。有没有其他方法来启动两个域的相同属性。这就是我的回答,Shishir。您可以使用.properties
并将其绑定到不同的域(只要域相同)。亲爱的Shashank,感谢您的回答。我现在已经使用了属性到属性的初始化,但是在一个具有巨大属性的域中,这非常耗时。有没有其他方法来启动两个域的相同属性。这就是我的回答,Shishir。您可以使用.properties
并将其绑定到不同的域(只要字段相同)。