混淆JPQL

时间:2014-05-21 05:46:10

标签: java jpa jpql

我希望JPQL喜欢以下示例:

让酒店对象有两个客户和组织对象。如果Customer不为null,则组织将为null。如果Customer为null,则组织不会为null。所以

我JPQL喜欢这个;

  

从Hotel h

中选择h.customer.name.firstName,h.organization.name

我想将这两个结果中的一个仅分配给一个变量,因为一个变量总是为空。 谢谢,抱歉我的英语。

2 个答案:

答案 0 :(得分:1)

可能您正在寻找COALESCE()功能。请尝试以下方法:

SELECT COALESCE(h.customer.name.firstName, h.organization.name) FROM Hotel h

如果需要,您还可以使用CASE表达式。

更多详情:http://docs.jboss.org/hibernate/orm/4.2/devguide/en-US/html/ch11.html#d5e3257

答案 1 :(得分:0)

您可以同时选择两个字段&然后可以检查代码中的空值,否则你可以尝试使用case语句,选择非空值。

SELECT CASE WHEN (h.customer.name.firstName NOT NULL) THEN h.customer.name.firstName
            WHEN (h.organization.name NOT NULL) THEN h.organization.name 
            ELSE DEFAULT_VALUE 
       END 
FROM Hotel h

[我还没有尝试过执行它,您可以根据需要进行修改尝试]