Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 是否存在JPQL null安全表达式_Hibernate_Jpa_Jpql - Fatal编程技术网

Hibernate 是否存在JPQL null安全表达式

Hibernate 是否存在JPQL null安全表达式,hibernate,jpa,jpql,Hibernate,Jpa,Jpql,在以下JPQL查询中: 从Employee e中选择NEW com.java2s.common.EmployeeDetails(e.name、e.salary、e.department.name) 如果e.department为null,如何将null传递给构造函数(作为第三个参数) 如果e.department为null,我猜e.department.name将导致异常 如果e.department为空,我想e.department.name将导致异常 否。e.department.name在

在以下JPQL查询中:

从Employee e中选择NEW com.java2s.common.EmployeeDetails(e.name、e.salary、e.department.name)

如果
e.department
null
,如何将
null
传递给构造函数(作为第三个参数)

如果
e.department
null
,我猜
e.department.name
将导致异常

如果e.department为空,我想e.department.name将导致异常

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

如果要选择没有部门的员工,则需要左联接:

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


注:实验是将猜测转化为事实的一种非常好的方法。你为什么不试试这个查询,而不是猜测它会做什么

目前,我正在试验问关于SO的问题:)我不太熟悉:)我做了更多的试验:)如果我想要
e.department.id
而不是
e.department.name
,那么查询将本地化到当前表,因为有所有需要的信息。在这种情况下将不会有连接。
select new com.java2s.common.EmployeeDetails(e.name, e.salary, d.name)  
from Employee e
left join e.department d