我正在使用groovy-grails和angular JS创建一个简单的Web应用程序。我有4个域对象(Developer,Tester,Programmer),它们都扩展了Person。在我的bootstrap.groovy文件中,我创建了新的开发人员,测试人员和程序员,但是当我运行我的应用程序时,它没有在Bootstrap.Groovy文件中填充表格。每当我从类头中取出(extends Person)并添加String firstName,它就会找到Developer,Tester和Programmer的名称。我也试过扩展一个抽象的Person类(不是域对象),但也失败了。见下文:
//domain object
class Person{
int id;
String firstName;
String lastName;
}
//domain object, non working copy
class Developer extends Person{
}
//domain object, working copy
class Developer{
int id;
String firstName;
String lastName;
}
//Boostrap.groovy
new Developer(id: 2, firstName: 'Foo', lastName: 'Ninja');
谢谢, Butler_Alfred
答案 0 :(得分:1)
尝试从您的域类中删除id
。 Grails隐式地为你添加了这个字段。
此外,当您在Developer
中创建新的Bootstrap.groovy
实例时,请不要传入您自己的ID。当持久化开发人员实例时,将自动设置一个。
Developer developer = new Developer(firstName: 'Foo', lastName: 'Ninja')
assert developer.id == null // id is null before save
developer.save()
assert developer.id != null // id is assigned after save