-1
Groovy的新功能。所以我有一个超Groovy(Grails)命名参数构造函数不会设置超类字段
class AbstractClass {
User user
}
和子类
class Category extends AbstractClass {
String name
}
,当我尝试创建在BootStrap.groovy中的对象(我使用的Grails),如:
User user1 = new User(...).save(failOnError: true)
// I know user1 is properly created
def category1 = new Category(User: user1, name: 'alice').save(failOnError: true)
好,我的问题是用户字段未被设置。它是空的。这已经改变了:以前,我不是保存用户,而是保存了它的ID(Long id),它正在工作。我在这里错过了什么魔法?
当我更改代码:
def category1 = new Category(User: user1, name: 'alice')
category1.setUser user1
category1.save(failOnError: true)
它工作得很好,所以我想一定是我丢失的东西在这里。
感谢您的帮助!
在第一种情况下,grails可能不会将用户持久保存到数据库,它可能只是在Hibernate Session中 - 您能否尝试添加flush:true为您保存用户的语句并查看是否作品?例如。新用户(...)。save(flush:true,failOnError:true) – bschipp
谢谢bschipp,但它是一个错字。用户应该是用户。 – ldepablo