2009-06-26 9 views
1

nous allons aller directement aux problèmes (avec Grails 1.1.1, il devrait fonctionner sur un précédent)Grails appartient à, devrais-je?

J'ai 2 domaines à savoir: l'utilisateur et détail comme celui-ci:

Class User { 
    String userName ; 
    ..... // another fields 

    static hasMany = [details:Detail]; 
} 

Class Detail{ 
    String detailName ; 
    ... // another fields 

    static belongsTo = [user:User]; 
} 

Maintenant, si je l'ai fait:

def user = User.get(1); 
Detail.findAllByUser(user); 

pourquoi produire une erreur?

Mais si je fais une modification sur Détail

Class Detail{ 
     String detailName ; 
     ... // another fields 

     User user; 
     static belongsTo = [user:User]; 
    } 

(en ajoutant l'utilisateur), il fonctionnera comme normal ...

est-il un effet en utilisant belongsTo? ou j'ai fait le concept des erreurs ici?

Répondre

3

Votre exemple n'est pas la manière dont vous accèderiez généralement aux détails. Les détails seraient accessibles via l'instance de l'utilisateur, par exemple:

def user = User.get(1) 
def userDetails = user.details // not Detail.findAllByUser(user); 
+0

ok, il est raisonnable pour hasMany. qu'en est-il de belongsTo? Dois-je indiquer que si j'ai le type hasMany dans l'utilisateur? – nightingale2k1

+4

Non, vous ne devez pas avoir un belongsTo dans la classe Detail. Cependant, si vous l'omettez, les suppressions ne seront pas cascadées. Par exemple, si vous supprimez un utilisateur, vous souhaiterez probablement que GORM supprime automatiquement tous les enregistrements de détails associés à cet utilisateur. Afin d'avoir cela géré automatiquement, vous avez besoin de l'belongsTo dans les détails. Dans votre situation je garderais l'appartTo. –

+0

D'accord, merci John. ça aide beaucoup – nightingale2k1