【发布时间】:2012-03-05 10:01:54
【问题描述】:
我有两个 JPA 实体:
- 时间表(包含预订列表)
- 预订(包含日期字段:日期 resDate)
我的目标是仅检索与日期参数 (planningDate) 匹配的预订,同时检索所有日程安排,无论该给定日期是否存在预订。
所以我写了:
SELECT s FROM Schedule as s LEFT JOIN s.reservations as r WHERE r.resDate = :planningDate order by s.startHour
尽管我 LEFT JOIN ,为什么没有在这个日期没有预订的日程安排?
可能与原生查询一样,LEFT JOIN 在与 WHERE 子句组合时看起来像 INNER JOIN。
那么,如何更改查询以满足我的要求?我还没有在 JPQL 中找到特定的功能。
【问题讨论】:
-
是的,我注意到了。我还知道,使用本机查询,可以将条件放在 LEFT JOIN 的“ON”子句上。但在 JPQL 中似乎是不可能的;这就是我问的原因:)
-
你说得对,问题不清楚。我正在重新编辑它。
-
您是否尝试过
LEFT OUTER JOIN不确定语法是否允许,或者某些语言使用它? -
是的,我试过了。效果一样。
-
你的两个实体有什么关系?如果没有现成的关系(例如
@JoinColumn( name="mycolumn" )我不认为你可以使用join。
标签: java hibernate jpa left-join