我的课如下

class PrefValue extends MainDomain {

    String entityClass
    Long entityId
    ....
}

我现在正在尝试将一个集合映射到两个不同的类
class TypeA extends MainDomain {
  Long entityId
  static hasMany = [preferences:PrefValue]
  static mappedBy = [preferences: "entityId"]
  ...
}
class TypeB extends MainDomain {
  Long entityId
  static hasMany = [preferences:PrefValue]
  static mappedBy = [preferences: "entityId"]
}

出现问题是因为TypeA和TypeB可以具有相同的ID,但是它们将具有不同的entityClass值。我将如何映射?

最佳答案

我假设entityId是主键,当TypeATypeB的主键值都相同时会导致问题。

在这种情况下,您可以删除主键约束,而改用复合主键。该文档进一步详细介绍了here

如果您不是主键,而只是具有唯一性约束,那么可以使每个区分符的entityId唯一:
static mapping = { entityId unique: 'entityClass'}

关于grails - GORM hasMany使用多个列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24000865/

10-10 22:51