Groovy(Grails)命名参数构造函数不设置超类字段

Groovy(Grails)命名参数构造函数不设置超类字段,grails,groovy,superclass,named-parameters,Grails,Groovy,Superclass,Named Parameters,Groovy新手。所以我有一个超类 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 cate

Groovy新手。所以我有一个超类

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,并且它正在工作。这里有我错过的魔法吗

当我将代码更改为:

def category1 = new Category(User: user1, name: 'alice')
category1.setUser user1
category1.save(failOnError: true)
它工作得很好,所以我想这里一定有我遗漏的东西

谢谢你的帮助

In

class AbstractClass {
  User user
}
因此,该类有一个名为user small u、类型为user capital u的属性

new Category(User: user1, name: 'alice')
应该是

new Category(user: user1, name: 'alice')

以匹配属性名称。请记住,Groovy与Java一样,是区分大小写的。

在第一种情况下,grails可能没有将用户持久化到数据库中,它可能只是在Hibernate会话中-您是否可以尝试添加flush:true以保存用户语句,并查看其是否有效?新用户…saveflush:true,failOnError:true,但这是一个输入错误。用户应该是用户。废话!!打字错误谢谢,我已经因为这个失去了半个小时的生命。