【问题标题】:JPA left join not working?JPA左连接不起作用?
【发布时间】:2019-02-02 21:38:51
【问题描述】:

我有两个实体 Outlet 和 Report。它们在 Entity 类中没有连接。即使出口 ID 不存在,我也想要报告。 以下是我正在编写的查询,但它的行为类似于内部联接。

@Query("Select rep,out.area.area_name from Report rep left join Outlet out on out.id=rep.outletId where rep.cDate in :dates")
List<Object[]> getReportsByMethodAndFormulaAndTimePeriods(@Param("dates") List<LocalDate> dates);

有什么想法吗?

【问题讨论】:

  • 我得到了包含报告实体和区域名称的对象数组列表,但没有得到没有与之关联的出口的报告实体
  • 尝试使用jdbc logger查看真实的sql查询及其结果...
  • 请分享一个例子,你得到什么输出,你期望什么输出
  • JPQL 通过关系连接,而不是随机连接其他实体。如果您认为某些东西“不工作”,那么至少发布 JPA 提供程序执行的 SQL 以及您的实体

标签: spring spring-boot jpa spring-data-jpa


【解决方案1】:

这不是 SQL,所以连接是通过实体字段进行的。查询应该是这样的

@Query("Select rep,out.area.area_name from Report rep left join rep.outlet out where rep.cDate in :dates")

我假设 Report 实体有一个可为空的字段 Outlet outlet。

在你的情况下,如果没有相关的出口,out.area.area_name 可能会失败

【讨论】:

  • Report 和 Outlet 实体没有使用字段连接,因此 Report 实体没有 Outlet outlet 字段..但有一个 Int outlet_id 字段。这种情况下不能加入吗?
  • 请发布实体类
猜你喜欢
  • 2015-12-02
  • 2012-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多