在以下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 e
是null
,如何将e.department
传递给构造函数(作为第三个参数)?
我猜如果null
是e.department.name
的情况下,e.department
会导致异常?
答案 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作为部门名称。
注意:实验是将猜测转化为事实的一种非常好的方法。您为什么不尝试查询而不是猜测它将做什么呢?