外键(FK_ 必须与引用的主键具有相同的列数
Foreign key (FK_ must have same number of columns as the referenced primary key
我正在使用旧数据库,其中 Table A 由 3 个复合键组成,Table B 由 2 个复合键组成,它们与 [=] 中的两个复合键相同37=]一个
OnesolPeNames
class OnesolPeNames implements Serializable {
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]
....
恢复设置
class RecoverySetup implements Serializable {
static mapping = {
table "recovery_setup"
id composite: ["division", "peid", "orgkey"]
columns {
division column: 'division', length: 10, sqlType: "char"
peid column: 'peid', length: 12, sqlType: "char"
orgkey column: 'org_key', length: 8, sqlType: "char"
oneSolName column: ['division', 'peid']
}
}
static belongsTo = [oneSolName: OnesolPeNames]
....
我正在尝试像这样访问 OnesolPeNames。
recoverySetup.onesolPeNames.peNameU。
我收到以下错误
Caused by MappingException: Foreign key
(FK_ib9w9pn893cwi1dkk84qs31bx:recovery_setup [division,
peid,onesol_pe_names_division,onesol_pe_names_peid])) must have same
number of columns as the referenced primary key (ONESOL_pe_names
[division,pe_id])
我将 oneSolName 列设置为 ['division', 'peid']
,onesol_pe_names_division,onesol_pe_names_peid
来自哪里?
莫非我的组合键既是PK的一部分,又起到了FK的作用,即"Derived Identities"?
我遇到了类似的问题,我以这种方式解决了映射 table:
class RecoverySetup implements Serializable {
static mapping = {
table "recovery_setup"
id composite: ["division", "peid", "orgkey"]
columns {
orgkey column: 'org_key', length: 8, sqlType: "char"
oneSolName {
column name: 'division'
column name: 'peid'
}
}
oneSolName updateable: false, insertable: false
}
static belongsTo = [oneSolName: OnesolPeNames]
...
}
我正在使用旧数据库,其中 Table A 由 3 个复合键组成,Table B 由 2 个复合键组成,它们与 [=] 中的两个复合键相同37=]一个
OnesolPeNames
class OnesolPeNames implements Serializable {
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]
....
恢复设置
class RecoverySetup implements Serializable {
static mapping = {
table "recovery_setup"
id composite: ["division", "peid", "orgkey"]
columns {
division column: 'division', length: 10, sqlType: "char"
peid column: 'peid', length: 12, sqlType: "char"
orgkey column: 'org_key', length: 8, sqlType: "char"
oneSolName column: ['division', 'peid']
}
}
static belongsTo = [oneSolName: OnesolPeNames]
....
我正在尝试像这样访问 OnesolPeNames。
recoverySetup.onesolPeNames.peNameU。
我收到以下错误
Caused by MappingException: Foreign key (FK_ib9w9pn893cwi1dkk84qs31bx:recovery_setup [division, peid,onesol_pe_names_division,onesol_pe_names_peid])) must have same number of columns as the referenced primary key (ONESOL_pe_names [division,pe_id])
我将 oneSolName 列设置为 ['division', 'peid']
,onesol_pe_names_division,onesol_pe_names_peid
来自哪里?
莫非我的组合键既是PK的一部分,又起到了FK的作用,即"Derived Identities"?
我遇到了类似的问题,我以这种方式解决了映射 table:
class RecoverySetup implements Serializable {
static mapping = {
table "recovery_setup"
id composite: ["division", "peid", "orgkey"]
columns {
orgkey column: 'org_key', length: 8, sqlType: "char"
oneSolName {
column name: 'division'
column name: 'peid'
}
}
oneSolName updateable: false, insertable: false
}
static belongsTo = [oneSolName: OnesolPeNames]
...
}