我如何通过使用其他Domain对象来启动Grails域类

时间:2019-08-07 06:59:46

标签: grails groovy gorm grails-domain-class

我有两个域名

class Book {

   String name
   Long id
}

class BookRef {

   String name
   Long id
   String refId
}

Book表中,我存储了id=1name='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对象,而不是通过绑定每个属性来实现。

现在,我现在使用该属性进行属性初始化,但是在具有各种属性的域中,这很耗时。

我该怎么做?

1 个答案:

答案 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都会为您提供所有域字段的映射。

请注意,此方法适用于StringbooleanintLong等原始类型,但Grails可能会抛出域包含集合,一对多或具有多个关系字段时,则为例外。