我正在尝试调整现有的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实现相同的效果吗?