“公共课堂Foo”v.s. Groovy域类中的“class Foo”

时间:2009-03-28 13:18:04

标签: grails groovy gorm

以下Groovy代码在写入grails-app / domain / Foo.groovy时创建一个名为Foo的GORM持久域类:

class Foo {
  String someField
}

但是,如果我改为编写“public class Foo”,则该类不会保持GORM持久化(即没有注入save()方法,也没有创建数据库表等):

public class Foo {
  String someField
}

我正在运行最新的Grails(1.1)稳定版本。

问题:这是一个错误还是预期的行为?为什么呢?

更新#1:相关子问题:我是唯一一个遇到此问题的人吗?很高兴知道其他人是否能够复制这个。谢谢!

3 个答案:

答案 0 :(得分:1)

听起来像个错误。

我将详细信息输入JIRA并从源头获得答案。

http://jira.codehaus.org/browse/GRAILS

答案 1 :(得分:1)

Groovy类默认是公共的(同样适用于Groovy方法),因此如果添加public,行为应该没有变化。但是,我无法在Grails 1.1.1

中重现此行为/错误

答案 2 :(得分:0)

我在1.3.3上没有得到这种行为

检查DomainClassArtefactHandler.groovy中的“isDomainClass”方法。你会看到(至少在1.3.3中)排除的唯一类型是闭包和枚举