我有一个结构相当简单的旧式数据库。我有包含“rollTotals”的“卷”。
Roll的主键为“rollID”,而RollTotals的主键为“rollID”和“category”。
所以在Grails中,我有:
class Roll {
Integer id
...
static hasMany = [ rollTotals: RollTotal ]
static mapping = {
table('rolls')
id(column:'rollID')
version false
...
}
}
和
class RollTotal implements Serializable {
Integer rollId
Integer category
...
static belongsTo = [ Roll ]
static mapping = {
table('rolltotals')
id composite:['rollId', 'category']
version false
rollId(column:'rollID')
category(column:'category')
...
}
这些映射可以单独正常工作,但是当我放置hasMany时,它表示:
因此,我认为它需要知道将哪一列用作外键,因此我添加了Roll:
static mappedBy = [rollTotals: "rollId" ]
它说:
我尝试使用rollID(作为列名),但得到相同的结果。
关于如何链接这些表的任何想法吗?
最佳答案
尝试将RollTotal的belongsTo更改为:
static belongsTo = [roll: Roll]
并添加到RollTotal的映射
roll(column:'rollId')