根据the Grails GORM guide ,域类的子类与父类共享同一个表,除非 tablePerHierarchy 设置为 false。
我找不到有关以下映射语句是否因“abstract”关键字而被忽略的信息
abstract class Item implements Comparable{
static mapping = {
tablePerHierarchy true
}
...
我的数据库不包含 Item 表,每个子类一个表(tablePerHierarchy 的预期状态==false)。
我是否需要使 Item 具体化但在验证中不允许它?我计划有一个 ItemController,其中使用创建表单中的
最佳答案
我确信您已经解决了这个问题,但我今天遇到了同样的问题,所以我想我应该插话一下。
在 Grails/Gorm 文档的第 5.2.3 节中,它指出“GORM 支持从抽象基类和具体持久 GORM 实体继承” (http://www.grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20(GORM).html)。
有趣的是,他们在本节的示例中没有提供抽象类的示例。
我尝试过,在我的层次结构中有一个抽象类(都位于层次结构的顶部,然后再向下一个分支)。每次我尝试持久化一个作为任何抽象子类的对象时,我都会遭遇无声的失败。
我首先从层次结构顶部删除了 Abstract 关键字,并且得到了更积极的结果。最后,我从层次结构中的所有分支中删除了抽象关键字,一切正常。
所以,我的结论是,在实践中,您不能在 Gorm 层次结构中使用抽象关键字。
所以我计划的层次结构是一些简单数据类型的层次结构,例如: 抽象类型 <- 具体文本 <- 具体 URL 抽象类型 <- 抽象数字 <- 具体积分 抽象类型 <- 抽象数字 <- 具体十进制
必须成为: 具体类型 <- 具体文本 <- 具体 URL 具体类型 <- 具体数字 <- 具体积分 具体类型 <- 具体数字 <- 具体小数
尽管我无意直接创建 Type 或 Numeric 的实例。
坦白说,我仍在使用 Grails 1.1.2,直到我觉得 1.2 足够稳定为止。
关于inheritance - TablePerHierarchy 对于抽象类总是 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2280507/