为了在映射单向 OneToMany 关系时实现外键列(无 joinTable),我按照 Grails(2.2.3 版)参考文档第 6.5.2.1 节OneToMany 映射的步骤进行操作,其中指出
对于单向关联,需要在关联本身上指定外键。例如,给定 Person(替换为 One)和 Address(替换为 Many)之间的单向 OneToMany 关系,以下代码将更改 Many 表中的外键
class One {
static hasMany = [manyCollection:Many]
static mapping = {
manyCollection(column:"ONE_ID")
}
}
但是,当我跑步时
One one = new One()
one.addToManyCollection(new Many())
one.save()
我进入控制台
insert
into
one
(id, version)
values
(null, ?)
insert
into
many
(id, version)
values
(null, ?)
insert
into
one_many
(one_many_collection_id, many_id)
values
(?, ?)
注意 Grails 创建了一个名为 one_many 的 joinTable。所以,我的问题是:这是一个错误还是其他什么?我应该怎么做才能摆脱 joinTable ?
即使我使用类似的东西
class One {
static hasMany = [manyCollection:Many]
static mapping = {
manyCollection(joinTable:false)
}
}
如此处突出显示的,我得到相同的输出