我的课如下
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
是主键,当TypeA
和TypeB
的主键值都相同时会导致问题。
在这种情况下,您可以删除主键约束,而改用复合主键。该文档进一步详细介绍了here。
如果您不是主键,而只是具有唯一性约束,那么可以使每个区分符的entityId
唯一:static mapping = { entityId unique: 'entityClass'}
关于grails - GORM hasMany使用多个列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24000865/