我有一个结构相当简单的遗留数据库。我有“roll”包含“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时,它会说:
缺少表格:rolls_rolltotals
所以我认为它需要知道哪个列用作外键,所以我添加到Roll:
static mappedBy = [rollTotals: "rollId" ]
它说:
org.codehaus.groovy.grails.exceptions.GrailsDomainException:为类[roll Roll]中的属性[rollTotals]指定的不存在的映射属性[rollId]
我尝试使用rollID(作为列名)但得到相同的结果。
有关如何链接这些表的任何想法吗?
答案 0 :(得分:4)
尝试将belongsTo for RollTotal更改为:
static belongsTo = [roll: Roll]
并添加到RollTotal的映射
roll(column:'rollId')