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

时间:2014-01-12 22:42:03

标签: 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 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)

它运作得很好,所以我猜这里肯定有一些东西。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

class AbstractClass {
  User user
}

该类有一个名称user(小u)且其类型User(大写U)的属性,因此< / p>

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

应该是

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

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