2017-09-06 3 views
0

Je possède ce cours:Trouver des parents par enfant un à plusieurs Grails des relations

class Parent{ 
    static hasMany = [children:Child] 
} 

class Children{ 
    static belongsTo = [Parent] 
} 

je veux faire quelque chose comme

Parent.findByChildren(ChildInstance) 

Dans la base de données, il y a une table avec l'identifiant de la relation de, mais Je ne sais pas comment y accéder.

Mais cela ne fonctionne pas, ce qui est la bonne façon?

Merci

Répondre

1

Modifier votre clause belongsTo classe Enfants:

class Children{ 
    static belongsTo = [parent: Parent] 
} 

Cela vous permettra d'accéder à un Chil L'instance parent de: childInstance.parent

0

D'abord, je changer les relations dans le domaine des enfants à

static belongsTo = [parent: Parent] // suggested by @bassmartin 

ou

Parent parent 

deux fait la même chose.

Une fois que vous avez la ChildInstance et la référence au parent, vous pouvez simplement faire

ChildInstance.parent  // returns instance of parent 

De même, si vous voulez trouver tous les enfants d'un parent, vous pouvez faire

parent.children   // return an array of children which you can iterate over. 
+0

L'enfant n'a aucune référence au parent et ce que je veux éviter est de parcourir tous les parents de la base de données. –

+0

voir les modifications ci-dessus. – elixir