HQL加入与存在

时间:2011-10-16 16:32:02

标签: nhibernate hql

我正在尝试调整现有的HQL查询的WHERE子句;目前我正在过滤'User.Affiliate'属性(用户记录有FK到会员):

select u from User u  where u.Affiliate.ID = ?

相反,我希望过滤与给定联盟会员绑定的订单。我正在尝试

select u from User u  where exists (from Order o where ? = o.Affiliate and u = o.User) 

这很有效并且提供了有效的结果。当应用程序包含匹配名称/电子邮件/公司字段的搜索过滤器时,就会出现问题。

 select u from User u  where exists (from Order o where ? = o.Affiliate and u = o.User) 
    and (u.FirstName like ? or u.LastName like ? 
         or u.Email like ? or u.Institution.Name like ?) 

这会产生不准确的数据集 - 返回一些但不是所有记录。我是如何编写exists子句的?如果没有,我可以通过JOIN实现相同的效果吗?

0 个答案:

没有答案