У меня есть один класс с именем User
и в этом классе коллекция UserRole
значений перечисления.
public class User {
...
public ICollection<UserRole> UserRoles { get; private set; }
...
}
[Flags]
public enum UserRole {
Beginner = 1,
Advanced = 2,
Expert = 4,
Admin = 8
}
Отношение User
к UserRole
является отношением «многие ко многим» и реализовано с тремя таблицами (tblUser, tblRole и tblUserRole, имеющие только userId и roleId). HBM выглядит следующим образом:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
<class name="User, SampleDll" table="tblUser">
...
<bag name="UserRoles" table="tblUserRole" cascade="all-delete-orphan" fetch="join">
<key column="UserId"/>
<element column="RoleId" type="UserRole, SampleDll" />
</bag>
...
</class>
</hibernate-mapping>
Теперь я хочу создать критерий, в котором будет иметь такую же семантику, что и
select u.* from tblUser u
left join tblUserRole ur on ur.UserId = u.UserId
where ur.RoleId = @USER_ROLE
Можно ли реализовать такие критерии (используя queryOver или отдельные критерии) без отдельного файла сопоставления для UserRole
enum?
Заранее спасибо за подсказки.
1019 * MRKS *