formula filter :
<property name="IsMarked" formula="(select count(*) from ItemWithUserFlag where ItemWithUserFlag.ItemId = ItemId and ItemWithUserFlag.UserId = :UserFilter.userId)" />
def:
<filter-def name="UserFilter">
<filter-param name="userId" type="Int32"/>
</filter-def>
-
SELECT Item.*, (select count(*) from ItemWithUserFlag where ItemWithUserFlag.ItemId = Item.ItemId and ItemWithUserFlag.UserId = ?) AS IsMarked FROM Item
IsMarked bool, count(*) 0, false, - > 0 true.
EDIT:
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Map(x => x.IsMarked).Formula("(select count(*) from ItemWithUserFlag where ItemWithUserFlag.ItemId = ItemId and ItemWithUserFlag.UserId = :UserFilter.userId)");
}
}
public class UserFilter : FilterDefinition
{
public UserFilter()
{
WithName("UserFilter")
.AddParameter("userId", NHibernate.NHibernateUtil.Int32);
}
}