2010-08-31 5 views
0

j'ai la relation entre deux classes de domaine:Domaine itération de classe dans Grails

class Emp { 
    String name 
    hasMany = [itemsell:Item, itembuy:Item] 
} 

class Item { 
    String name 
} 

Et j'ai besoin de savoir quels éléments sont communs aux deux collections pour un Emp (itemsell et itembuy) donnée; comment puis-je faire une telle itération?

Merci

Répondre

4

apporter ces modifications à la classe Emp

class Emp { 
    String name 
    hasMany = [itemsell:Item, itembuy:Item] 

    // Modifications 
    Collection<Item> getCommonItems() { 
     itemsell.intersect(itembuy) 
    }  

    static transients = [ 'commonItems' ] 
} 

Vous pouvez ensuite appeler emp.commonItems pour obtenir les éléments en commun. Vous devez ajouter commonItems à la liste transients, de sorte que GORM comprenne que ce n'est pas une propriété persistante

+0

Je ne connaissais pas l'intersection .. J'adore! –

+0

Maintenant c'est l'élégance ... merci – xain

1

Utilisez la méthode findAll sur l'une des collections. Quelque chose comme ceci:

def similarItems(itemsell, itembuy) { 
    itemsell.findAll{ sell -> itembuy.contains(sell) } 
} 
Questions connexes