【问题标题】:MappedSuperclass Alternatives in Grails 2.0Grails 2.0 中的 MappedSuperclass 替代方案
【发布时间】:2012-03-31 19:22:36
【问题描述】:

问题与older SO question 中的问题相同,但该解决方案对 Grails 2.0 不再有效 - 抽象域类不作为 @MappedSuperclass 处理,但始终保留在它自己的表中。如果我将它移到 grails-app/domain 之外,它根本不起作用。

那么有没有办法让抽象超类(甚至更好的 mixin)表现得像 @MappedSuperclass(无需创建自己的具有共享 id 和公共字段的表)?

【问题讨论】:

    标签: hibernate inheritance grails grails-orm


    【解决方案1】:

    我们遇到了同样的问题,并以这种方式使用 grails 2.2.1(不是 grails 2.0)解决了它:

    在 src/groovy 下创建了抽象超类:

    abstract class Auditable {
      Date dateCreated
      Date lastUpdated
    
      static constraints = {
        dateCreated(display:false)
        lastUpdated(display:false)
      }
    }
    

    在 grails-app/domain 下创建了具体类“Parcel”:

    class Parcel extends Auditable {
      ...
    }
    

    您应该使用 Grails 2.1 或最新版本的 Grails 2.2.3 而不是 2.0.x 来解决这种映射问题。

    【讨论】:

    • 这按预期工作。非常感谢您。在 Grails 2.4.5 中测试
    • 在 Grails 3.2.4 上也为我工作,尽管我必须将我的所有关联都放在基类中,即使它们对两者都是一样的。当我将它们放在父类中时,它找不到它们(例如,当我尝试从基类的实例访问关联时说没有这样的属性)。尽管如此,还是比两个完全相同的课程要好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多