假设我有一家有电话号码的公司。我可能有潜在客户记录,我想获得电话号码的潜在客户。我必须先确保我的公司不为空吗?选项1FROM Lead l WHERE l.company IS NOT NULL AND l.company.phone = :phone选项 2FROM Lead l WHERE l.company.phone = :phone在选项 1 中,我在检查电话之前确保公司不为空。在选项 2 中,我假设休眠有办法将其短路。我试过寻找但找不到关于这个事实的文档。我也在移动自动取款机上,所以这妨碍了我的搜索(以及我发布这个!)
1 回答
子衿沉夜
TA贡献1828条经验 获得超3个赞
不,你没有。where l.company.phone = :phone
等价于inner join l.company c where c.phone = :phone
,并且内部联接将简单地过滤掉具有空公司的实体。
这些查询最终被转换为 SQL 并由数据库执行。他们不使用您的 Java 实体。相应的 SQL 查询看起来像
from lead l, company c where l.company_id = c.id and c.phone = :phone
顺便说一句,一个简单的测试可以让你自己找出答案。
添加回答
举报
0/150
提交
取消