【问题标题】:Having generic belongsTo in grails domain在 grails 域中具有通用的 belongsTo
【发布时间】:2013-03-05 14:52:38
【问题描述】:

我的 grails 项目中有三个类。什么是正确的 grails 域定义

Class A {

 List<Resource> xResources
 List<Resource> yResources

 hasMany = [ xResources: Resource, yResources: Resource]
}

Class B {
  List<Resource> zResources
  hasMany = [ zResources: Resource]
}


Class Resource {

  String title
   .....
     ..

 belongsTo = [A, B]

}

上面的定义失败了,因为我没有提到 A 类中的 mappedBy。如何避免这种情况。我希望 Resource 类是通用的。 我不想将 Resource 类仅限于两个类,但我应该允许它扩展到其他类。我还需要从 Resource 对象中获取源引用。对于这种情况,正确的 GORM 定义应该是什么?

【问题讨论】:

    标签: grails grails-orm relationship grails-domain-class


    【解决方案1】:

    我在您的代码中发现了 3 个主要问题:

    1. 属性xResources, yResources, zResources 是双重定义的。只需删除重复的 List&lt;Resource&gt; ... 定义。

    2. hasMany 和 belongsTo 前面应该有一个 static 关键字。

    3. 我不确定belongsTo 可以指向多个类。如果没有,只需将其删除。

    【讨论】:

      【解决方案2】:

      请按照以下代码操作

      Class A {
      static hasMany = [ xResources: Resource, yResources: Resource]
      }
      
      Class B {
      
      static hasMany = [ zResources: Resource]
      }
      
      
      Class Resource {
      
        String title
         .....
           ..
      
       static belongsTo = [a:A, b:B]
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-17
        • 2012-10-10
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-29
        • 2014-02-12
        相关资源
        最近更新 更多