GORM 不处理在其复合主键中具有进一步关联的关联映射
GORM doesn't handle mapping of associations which have a further association in their composite primary key
我正在尝试映射 GORM/Grails 应用程序中的现有表格。大多数表都有 复合主键 (不是我的选择)。
我发现当我将关联映射到 class(child 的 parent)时,parent [=40 的复合键=] 包含与 class 和复合键的关联(grandparent),GORM 不会费心检查 grandparent class 和 subs 的映射在 non-composite 键中。
Child
class Child implements Serializable {
Parent parent
String name
belongsTo= [parent: Parent]
static mapping= {
id(composite: ['parent', 'name'])
}
}
Parent
class Parent implements Serializable {
GrandParent grandParent
String name
Collection<Child> children
belongsTo= [grandParent: GrandParent]
hasMany= [children: Child]
static mapping= {
id(composite: ['grandParent', 'name'])
}
}
盛大Parent
class GrandParent implements Serializable {
String name
Integer luckyNumber
Collection<Parent> parents
hasMany= [parents: Parent]
static mapping= {
id(composite: ['name', 'luckyNumber'])
}
}
尝试收集外键时 DDL 生成失败。
org.hibernate.MappingException:
Foreign key (FK_1:CHILD [parent_grandparent_id,parent_name]))
must have same number of columns as the referenced primary key
(PARENT [parent_grandparent_name,parent_grandparent_lucky_number,parent_name])
它创建的外键与 parent class 的主键不匹配(它能够正确破译)。
尝试:
Child
class Child implements Serializable {
String name
static belongsTo= [parent: Parent]
static mapping= {
id(composite: ['parent', 'name'])
}
}
Parent
class Parent implements Serializable {
String name
//static belongsTo= [parent: Parent] //why do you need this
static belongsTo= [GrandParent ] //did you mean this
static hasMany= [children: Child,grandParent: GrandParent ]
static mapping= {
id(composite: ['grandParent', 'name'])
}
}
盛大Parent
class GrandParent implements Serializable {
String name
Integer luckyNumber
static hasMany= [parents: Parent]
static mapping= {
id(composite: ['name', 'luckyNumber'])
}
}
我在 Grails Slack #gorm 上四处询问,这似乎是 Gorm 映射中的一个空白。
我在 Grails 数据映射项目中 raised an issue。我们会看看这会发生什么。
我正在尝试映射 GORM/Grails 应用程序中的现有表格。大多数表都有 复合主键 (不是我的选择)。
我发现当我将关联映射到 class(child 的 parent)时,parent [=40 的复合键=] 包含与 class 和复合键的关联(grandparent),GORM 不会费心检查 grandparent class 和 subs 的映射在 non-composite 键中。
Child
class Child implements Serializable {
Parent parent
String name
belongsTo= [parent: Parent]
static mapping= {
id(composite: ['parent', 'name'])
}
}
Parent
class Parent implements Serializable {
GrandParent grandParent
String name
Collection<Child> children
belongsTo= [grandParent: GrandParent]
hasMany= [children: Child]
static mapping= {
id(composite: ['grandParent', 'name'])
}
}
盛大Parent
class GrandParent implements Serializable {
String name
Integer luckyNumber
Collection<Parent> parents
hasMany= [parents: Parent]
static mapping= {
id(composite: ['name', 'luckyNumber'])
}
}
尝试收集外键时 DDL 生成失败。
org.hibernate.MappingException:
Foreign key (FK_1:CHILD [parent_grandparent_id,parent_name]))
must have same number of columns as the referenced primary key
(PARENT [parent_grandparent_name,parent_grandparent_lucky_number,parent_name])
它创建的外键与 parent class 的主键不匹配(它能够正确破译)。
尝试:
Child
class Child implements Serializable {
String name
static belongsTo= [parent: Parent]
static mapping= {
id(composite: ['parent', 'name'])
}
}
Parent
class Parent implements Serializable {
String name
//static belongsTo= [parent: Parent] //why do you need this
static belongsTo= [GrandParent ] //did you mean this
static hasMany= [children: Child,grandParent: GrandParent ]
static mapping= {
id(composite: ['grandParent', 'name'])
}
}
盛大Parent
class GrandParent implements Serializable {
String name
Integer luckyNumber
static hasMany= [parents: Parent]
static mapping= {
id(composite: ['name', 'luckyNumber'])
}
}
我在 Grails Slack #gorm 上四处询问,这似乎是 Gorm 映射中的一个空白。
我在 Grails 数据映射项目中 raised an issue。我们会看看这会发生什么。