2010-04-22 6 views
0

J'essaye actuellement de créer un objet de domaine d'amitié pour lier deux objets d'utilisateur (avec un peu de données supplémentaires: createDate, confirmedStatus). Mon modèle de domaine se présente comme suitDans Grails, comment puis-je créer un modèle de domaine pour lier deux d'un autre modèle?

class Friendship { 

User userOne 
User userTwo 
Boolean confirmed 
Date createDate 
Date lastModifiedDate 

static belongsTo = [userOne:User , userTwo:User] 

static constraints = { 
userOne() 
userTwo() 
confirmed() 
createDate() 
lastModifiedDate() 
} 
} 

J'ai également ajouté les entrées suivantes à la classe utilisateur

static hasMany = [ friendships:Friendship ] 
static mappedBy = [ friendships:'userOne' , friendships:'userTwo' ] 

Quand je fais cela, le résultat est une nouvelle amitié créée (et visible à travers le contrôleur) avec les deux utilisateurs répertoriés dans leurs emplacements respectifs. Quand je regarde les détails de userOne, je vois le friedship énuméré. Quand je vois les détails de userTwo, aucune amitié n'est listée. Ce n'est pas le comportement que je m'attendais. Que fais-je incorrectement? Pourquoi ne puis-je pas voir l'amitié répertoriée sous les deux utilisateurs?

Répondre

1

Vous avez déclaré les propriétés userOne et userTwo deux fois dans la classe Friendship. Une fois ici:

static belongsTo = [userOne:User , userTwo:User] 

Et encore une fois ici:

User userOne 
User userTwo 

Changer votre classe d'amitié à cette

class Friendship { 

    Boolean confirmed 
    Date createDate 
    Date lastModifiedDate 

    static belongsTo = [userOne:User , userTwo:User] 

    static constraints = { 
    userOne() 
    userTwo() 
    confirmed() 
    createDate() 
    lastModifiedDate() 
    } 
} 
+0

ne semble pas faire une différence, l'amitié est toujours vu que comme propriété de l'un des amis. – gerges

Questions connexes