【发布时间】:2012-11-26 08:11:04
【问题描述】:
我有一个关于 grails 域类的相当简单的问题。我不确定我知道如何正确表达它,因为我似乎无法在谷歌上找到答案。
我有一个 groovy 域类
class DomainObject {
String name
String email
}
还有一个使用此域对象的 java 类。
public class DomainUser {
public void method() {
DomainObject object = new DomainObject();
object.getId();
}
}
但是我在线上遇到错误
object.getId();
带有消息:
方法getId()未定义该类型
由于 id 是由 grails 应用程序/hibernate 自动生成的,如何将 id 公开给 java 类?
【问题讨论】:
-
是什么给了你错误?
grails compile还是你的 IDE?在编译时通过 AST 转换将许多半神奇的东西添加到 Grails 人工制品类中(其中之一是用于域类的getId()),如果您的 IDE 不知道这些转换,它将失败。 -
另外,顺便说一句,Grails 通过元类机制覆盖域类构造函数,以使诸如将服务自动装配到域中之类的事情正常工作。因此,如果您想在 Java 代码中“新建”一个域类,您应该使用
InvokerHelper.invokeNoArgumentsConstructorOf(DomainClass.class),这是 Java 调用元类提供的构造函数而不是真正的构造函数的方式。
标签: java hibernate grails groovy