2010-06-04 3 views
0

J'essaie de créer une requête HQL qui va filtrer un arbre basé sur un utilisateur.Autorisations de l'arborescence du filtre Nhibernate

Sur la racine de l'arborescence, j'ai AllowUsers et AllowRoles et sur chaque nœud j'ai DenyUsers et DenyNodes. Je peux filtrer pour sur l'utilisateur à la racine de l'arbre à l'aide

select e 
from oStructureMenu e 
    join fetch e.Nodes n 
where e.Id = :id 
    and :user in (select u from e.AllowUsers u) 

mais quand j'ajoute

and :user in (select f.DenyUsers from n f) 

sql créé a une erreur de syntaxe

J'ai aussi aucune idée de la façon dont je Je vais comparer les rôles de l'utilisateur aux rôles dans les collections de rôles autoriser ou refuser

Toute aide sera appréciée ...

+0

ce qui est (sélectionnez f.DenyUsers de ** n ** f)? –

+0

Qu'entendez-vous par "comparer les rôles"? –

Répondre

1

ne devrait pas il

and :user in (select f from n.DenyUsers f) 
+0

Non, le denyusers est dans les noeuds pas dans la racine –

+0

mais j'ai changé la position des DenyUsers à la n au lieu de la f et cela a fonctionné, merci! Sur mon autre question, comment comparer le contenu des collections de rôles dans HQL? –

Questions connexes