我有一个课程如下
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值。我该如何映射?
答案 0 :(得分:1)
我假设entityId
是主键,导致TypeA
和TypeB
两者的主键值相同时出现问题。
在这种情况下,您可以删除主键约束,而是使用复合主键。文档详细介绍了它here。
如果它不是主键并且只有一个唯一约束,那么你可以使每个鉴别器entityId
唯一:
static mapping = {
entityId unique: 'entityClass'
}