【发布时间】:2015-06-30 19:39:30
【问题描述】:
我正在尝试使用复合键映射多对一关系。
我希望能够像 recoverySetup.onesolPeNames.peNameU 那样从 RecoverySetup 访问 OnesolPeNames 域对象
我已将以下代码添加到我的 RecoverySetup 映射中。
oneSolution {
column name: 'division'
column name: 'peid'
};
表 A
class RecoverySetup implements Serializable {
static constraints = {
}
static mapping = {
table "recovery_setup"
id composite: ["division", "peid", "orgkey"]
columns{
division column: 'division'
peid column: 'peid'
orgkey column: 'org_key'
oneSolution {
column name: 'division'
column name: 'peid'
};
}
}
String division
String peid
String orgkey
OnesolPeNames oneSolution
}
表 B
class OnesolPeNames implements Serializable {
static constraints = {
}
static mapping = {
table "ONESOL_pe_names"
id composite: ["division", "peid"]
columns{
division column: 'division', length: 8, sqlType: "char"
peid column: 'pe_id', length: 12, sqlType: "char"
peNameU column: 'pe_name_u', length: 50, sqlType: "char"
}
}
static hasMany = [recoverySetups: RecoverySetup]
String division
String peid
String peNameU
}
我得到以下异常
由 MappingException 引起:实体映射中的重复列: org.hri.pisr.domain.RecoverySetup 列:除法(应映射 插入=“假”更新=“假”)
我还发现了这个 SO 帖子 One-to-Many With Composite Keys and Different Column Names in Grails
【问题讨论】:
-
冒着问显而易见的风险,您是否尝试在映射中包含“插入:假,更新:假”?
-
我试过这样 oneSolution { column name: 'division', insert: false, update: false column name: 'peid', insert: false, update: false } 有同样的错误
-
在列定义中呢?
-
我是gorm新手,请解释一下。
-
没关系!这是一个愚蠢的建议。您需要有一个复合键吗?您可以使用
static hasOne = [OnesolPeNames: 'oneSolution']建立双向关系
标签: hibernate grails grails-orm