2010-06-28 4 views
2

J'ai une base de données avec une structure assez simple. J'ai "rouleaux" qui contiennent "rollTotals". Le rouleau a une clé primaire de "rollID" et RollTotals ont une clé composite sur "rollID" et "catégorie".Grails/GORM Legacy DB un-à-plusieurs mappedBy numéro

Donc Grails, j'ai:

class Roll { 
    Integer id 
    ... 
    static hasMany = [ rollTotals: RollTotal ] 
    static mapping = { 
     table('rolls') 
     id(column:'rollID') 
     version false 
     ... 
    } 
} 

et

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') 
    ... 
} 

Ces applications fonctionnent très bien individuellement, mais quand je mets le hasMany, il dit:

table manquante: rolls_rolltotals

Je pensais qu'il avait besoin de savoir que la colonne à utiliser comme clé étrangère, donc j'ajouté Roll:

static mappedBy = [rollTotals: "rollId" ] 

Il dit:

org.codehaus.groovy.grails.exceptions.GrailsDomainException : propriété de cartographie inexistante [rollId] spécifié pour la propriété [rollTotals] dans la classe [catégorie roll]

J'ai essayé avec rollID (comme le nom de colonne), mais obtenir le même résultat.

Une idée de comment je peux relier ces tables?

Répondre

4

Essayez de changer belongsTo pour RollTotal à:

static belongsTo = [roll: Roll] 

et ajouter à la cartographie pour

RollTotal
roll(column:'rollId') 
+0

Cela a fonctionné et je comprends pourquoi. Merci. –

Questions connexes