是否有JPQL空安全表达式

时间:2019-04-19 10:50:11

标签: hibernate jpa jpql

在以下JPQL查询中:

import inspect def f(*x, **y): _,_,_,lo=inspect.getargvalues(inspect.currentframe()) print(list(lo.values())) list_=[1,2,3,4] f(list_)

如果SELECT NEW com.java2s.common.EmployeeDetails(e.name, e.salary, e.department.name) FROM Employee enull,如何将e.department传递给构造函数(作为第三个参数)?

我猜如果nulle.department.name的情况下,e.department会导致异常?

1 个答案:

答案 0 :(得分:1)

  

我猜如果e.department为null,e.department.name会导致异常?

不。 e.department.name在Employee表和Departement表之间进行隐式 inner 连接。因此,如果某个员工没有任何部门,那么该查询甚至不会返回该员工。

如果要选择没有部门的员工,则需要加入:

select new com.java2s.common.EmployeeDetails(e.name, e.salary, d.name)  
from Employee e
left join e.department d

上面的查询将返回员工的姓名和工资,如果员工没有部门,则返回null作为部门名称。

注意:实验是将猜测转化为事实的一种非常好的方法。您为什么不尝试查询而不是猜测它将做什么呢?