Grails / GORM Legacy DB一对多mappedBy问题

时间:2010-06-28 17:36:16

标签: hibernate grails mapping gorm

我有一个结构相当简单的遗留数据库。我有“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(作为列名)但得到相同的结果。

有关如何链接这些表的任何想法吗?

1 个答案:

答案 0 :(得分:4)

尝试将belongsTo for RollTotal更改为:

static belongsTo = [roll: Roll]

并添加到RollTotal的映射

roll(column:'rollId')