【发布时间】:2011-09-15 03:14:52
【问题描述】:
当一个表的主键也是另一个表的外键时,在 GORM 中映射两个实体的最佳方法是什么。例如:
这是一张桌子:
CREATE TABLE `table_a` (
`a_id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`a_id`)
)
并且这个表'a_id'的pk被下表引用:
CREATE TABLE `table_b` (
`b_id` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`b_id`),
KEY `b_id_fk` (`b_id`),
CONSTRAINT `b_id_fk` FOREIGN KEY (`b_id`) REFERENCES `table_a' (`a_id`)
)
如何在 Grails/GORM 中映射上述两个实体?下面的代码显然不起作用,因为 GORM 会抛出异常“实体映射中的重复列”。
class TableB {
TableA tableA
static belongsTo = [TableA]
static mapping = {
id column:"b_id"
version false
tableA column:"b_id"
}
static constraints = {
tableA unique: true
}
}
注意:我使用的是 grails 1.3.7,但如果此问题是最近修复的问题,我可以切换到更新的版本。请告诉我。
【问题讨论】:
-
您可以更改架构还是必须让主键也是 fk?
-
我知道架构不符合最佳实践。但这是一个我无法更改的遗留数据库。
标签: hibernate grails groovy grails-orm grails-domain-class