2012-02-20 2 views
0

Supposons que j'ai une configuration comme ce qui suit:Sélectionnez la cartographie hasMany avec Gorm dans Grails

class User { 
    static hasMany = [items : Item]; 
} 

class Item { 
    String name; 
} 

Je suis en train de sélectionner tous Users qui ont un Item dans cette cartographie hasMany. J'ai un identifiant d'un article, et je veux trouver tous les utilisateurs qui "ont" cet article.

Y a-t-il une requête HQL que je peux exécuter pour faire ceci ou mieux encore, une fonction GORM intégrée qui gère cette requête?

Supposant ce étaient SQL droites que je ferais quelque chose comme:

SELECT `user_id` FROM `user_item` WHERE `item_id`=[ID] 

regardant dans H2 Je peux écrire la requête

SELECT USER_ID FROM USER_ITEM WHERE ITEM_ID=1; 

Je peux développer ce SQL pour inclure l'ensemble de l'objet utilisateur:

SELECT * FROM user, user_item WHERE user_item.item_id=[item id] AND user.id = user_user.user_items_id; 

Répondre

2

Cette HQL fonctionnera:

Item item = ... 
Item.executeQuery(
    'from User u where :item in elements(u.items)', 
    [item: item])