为了账号安全,请及时绑定邮箱和手机立即绑定

我是否必须在我的 hql 查询中防御性地保护空值?

我是否必须在我的 hql 查询中防御性地保护空值?

不负相思意 2022-04-28 17:04:55
假设我有一家有电话号码的公司。我可能有潜在客户记录,我想获得电话号码的潜在客户。我必须先确保我的公司不为空吗?选项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

顺便说一句,一个简单的测试可以让你自己找出答案。


查看完整回答
反对 回复 2022-04-28
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信