Grails gorm如何在每个具体类继承抽象类的位置为每个具体类插入表
大家好,情况如下 我有一个抽象类AbstractProfile和一个具体类GoogleProfileGrails gorm如何在每个具体类继承抽象类的位置为每个具体类插入表,grails,gorm,Grails,Gorm,大家好,情况如下 我有一个抽象类AbstractProfile和一个具体类GoogleProfile abstract class AbstractProfile { ..... } class GoogleProfile extends AbstractProfile { ...... } 我正在使用grails,但gorm没有为google概要文件插入表当前gorm只为AbstractProfile类插入表请提前帮助谢谢grails 2.0持久化抽象类。为了向扩展类
abstract class AbstractProfile {
.....
}
class GoogleProfile extends AbstractProfile {
......
}
我正在使用grails,但gorm没有为google概要文件插入表当前gorm只为AbstractProfile类插入表请提前帮助谢谢grails 2.0持久化抽象类。为了向扩展类启用单个表,需要指定:
static mapping = {
tablePerHierarchy false
}
到抽象类。否则,整个层次结构将“活”在同一个表中。Grails2.0持久化抽象类。为了向扩展类启用单个表,需要指定:
static mapping = {
tablePerHierarchy false
}
到抽象类。否则,整个层次结构将“活”在同一个表中。我做了一些挖掘,发现从开始,您有以下映射选项:
tablePerConcreteClass true
似乎文档(即使是版本)还没有更新。我做了一些挖掘,发现从开始,您有以下映射选项:
tablePerConcreteClass true
文档(即使是版本)似乎还没有对此进行更新。您可以使用:
abstract class BaseDomain {
static mapping = {
tablePerConcreteClass true
id generator: 'increment'
version false
}
}
您可以使用以下选项:
abstract class BaseDomain {
static mapping = {
tablePerConcreteClass true
id generator: 'increment'
version false
}
}
继Маааа的伟大回答之后,有两件事对我起了作用
tablePerConcreteClass true
abstract class BaseDomain {
static mapping = {
tablePerHierarchy false // avoid creating the base_domain table
tablePerConcreteClass true
id generator: 'increment' // https://jira.grails.org/browse/GRAILS-10849
someColumnInBaseDomain index: true // index this column in each subclass table
}
}
继Маааа的伟大回答之后,有两件事对我起了作用
tablePerConcreteClass true
abstract class BaseDomain {
static mapping = {
tablePerHierarchy false // avoid creating the base_domain table
tablePerConcreteClass true
id generator: 'increment' // https://jira.grails.org/browse/GRAILS-10849
someColumnInBaseDomain index: true // index this column in each subclass table
}
}
我使用的grails版本是2.0.4我使用的grails版本是2.0.4静态映射={tablePerHierarchy:false}Hello heikkim我已经将此映射插入到我的抽象类中,但仍然是相同的结果在“tablePerHierarchy”和“false”之间的定义中有一个额外的冒号。感谢heikkin,它对我有效,但现在当我想将google profile的一个实例保存到db时,会生成以下错误|错误2012-08-03 12:52:41748[pool-15-thread-2]错误hibernate.AssertionFailure-发生断言失败(这可能表明hibernate中存在错误,但更可能是由于会话的不安全使用)消息:com.test.demo.GoogleProfile条目中的null id(发生异常后不要刷新会话)在添加tablePerHierarchy false之前是否删除了旧表结构?实际上,在用于开发的Datasource.groovy文件中,我正在使用create drop,每次服务器启动db structure recreatedstatic mapping={tablePerHierarchy:false}Hello heikkim我已将此映射插入我的抽象类,但结果仍然相同您在定义中有一个额外的冒号,位于“tablePerHierarchy”和“false”之间。感谢heikkin,它对我有效,但现在当我想将google profile的一个实例保存到db时,会生成以下错误|错误2012-08-03 12:52:41748[pool-15-thread-2]错误hibernate.AssertionFailure-发生断言失败(这可能表明hibernate中存在错误,但更可能是由于会话的不安全使用)消息:com.test.demo.GoogleProfile条目中的null id(发生异常后不要刷新会话)在添加tablePerHierarchy false之前是否删除了旧的表结构?实际上,在我的Datasource.groovy开发文件中,我正在使用create drop,每次服务器启动db structure时,重新创建一点对该代码的解释将有助于将来的读者。为了避免创建基域表,我还需要tablePerHierarchy:false。我发现使用tablePerConcreteClass而不是将基域类放在src中的好处是,我可以在基域类中索引列。@gabe感谢我在这里创建了一个答案,解释您的意思-作为其他人的参考点。对这段代码的一点解释将对您有所帮助未来的读者。为了避免创建基域表,我还需要tablePerHierarchy:false。我发现使用tablePerConcreteClass而不是将基域类放在src中的优点是,我可以索引基域类中的列。@gabe谢谢,我在这里创建了一个Answer来解释您的意思-作为参考点为他人