我有一个结构相当简单的旧式数据库。我有包含“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')

10-02 23:42