【发布时间】:2019-06-17 02:28:54
【问题描述】:
我是 JPA 的新手,我有一个 Left Join 场景。 我的本机 sql 查询如下,我使用左连接从 V_MONITORING 表中获取 st.id = 10001 的完整记录。 我有一些 id_legislature 的空值,也需要选择它们,因此使用左连接
select distinct
mv.id_set, mv.id_travel, mv.id_legislature
from
V_MONITORING mv
left join v_set st on mv.id_set = st.id
left join v_travel fg on mv.id_travel = fg.id
left join v_legislature gg on mv.id_legislature = gg.id;
与我使用 JPA 条件查询实现的相同,我无法获取空记录 下面是代码
Predicate predicate = cb.conjunction();
Root<MonitoringBE> mvRoot = criteriaQuery.from(MonitoringBE.class);
mvRoot.fetch(MonitoringBE.id_set, JoinType.LEFT);
mvRoot.fetch(MonitoringBE.id_travel, JoinType.LEFT);
mvRoot.fetch(MonitoringBE.id_legislature, JoinType.LEFT);
final Path<Object> serieneinsatzterminPath= mvRoot.get(MonitoringBE.id_set);
predicate = cb.and(predicate, cb.EqualTo(serieneinsatzterminPath.get(SetBE.GUELTIG_VON_DATUM), startSetDate));
criteriaQuery.multiselect(
mvRoot.get(MonitoringBE.id_travel).alias("id_travel"),
mvRoot.get(MonitoringBE.id_set).alias("id_set"),
mvRoot.get(MonitoringBE.id_legislature).alias("id_legislature"))
.distinct(true).where(predicate);
谁能指导我。
【问题讨论】:
-
您能否更清楚地解释您观察到的行为以及它与您的预期有何不同? stackoverflow.com/help/how-to-ask
标签: java jpa criteriaquery