[This is a repost of a question asked on stackoverflow.com that got no
response]
I have an object model where a Calendar object has an
IDictionary<MembershipUser, Perms> called UserPermissions, where
MembershipUser is an object, and Perms is a simple enumeration. This
is in the mapping file for Calendar as
<map name="UserPermissions" table="CalendarUserPermissions"
lazy="true" cascade="all">
<key column="CalendarID"/>
<index-many-to-many class="MembershipUser" column="UserGUID" />
<element column="Permissions" type="CalendarPermission" not-
null="true" />
</map>
Now I want to execute a query to find all calendars for which a given
user has some permission defined. The permission is irrelevant; I just
want a list of the calendars where a given user is present as a key in
the UserPermissions dictionary. I have the username property, not a
MembershipUser object. How do I build that using QBC (or HQL)? Here's
what I've tried:
ISession session = SessionManager.CurrentSession;
ICriteria calCrit = session.CreateCriteria<Calendar>();
ICriteria userCrit =
calCrit.CreateCriteria("UserPermissions.indices");
userCrit.Add(Expression.Eq("Username", username));
return calCrit.List<Calendar>();
This constructed invalid SQL -- the WHERE clause contained WHERE
membership1_.Username = @p0 as expected, but the FROM clause didn't
include the MemberhipUsers table.
Also, I really had to struggle to learn about the .indices notation. I
found it by digging through the NHibernate source code, and saw that
there's also .elements and some other dotted notations. Where's a
reference to the allowed syntax of an association path? I feel like
what's above is very close, and just missing something simple.
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en.