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



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(长id)并且它正在工作。我这里缺少什么魔法吗?

当我将代码更改为:

def category1 = new Category(User: user1, name: 'alice')
category1.setUser user1
category1.save(failOnError: true)

它工作得很好,所以我想这里一定有什么我错过了。

感谢您的任何帮助!

in

class AbstractClass {
  User user
}

该类具有一个属性,其名称user(小 U),其类型User(大写 U),因此

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

应该是

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

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

最新更新