Spring 数据 JDBC 是否支持实体之间的连接?

Does Spring Data JDBC support joins between entities?

正如我在文档中所读到的,Spring Data JDBC 支持查询创建,例如 Spring Data JPA

例如: findByProperty(Property property)

我的问题:

Spring Data JDBC 是否支持我们创建查询并使用它们的属性连接两个(或更多)实体以查找结果的情况,就像在 Spring Data JPA 中一样?

示例:

@Entity
class Person {
  private final @Id Long id;
  private final Car car;
}

@Entity
class Car {
  private final @Id Long id;
  private String color;
}

interface PersonRepository extends CrudRepository<Person, Long> {
  List<Person> findByCarColor(Color red);
}

interface CarRepository extends CrudRepository<Car, Long> {
}

我想找出所有至少拥有一辆红色汽车的人。该方法会给出正确的输出吗?

恐怕您误读了文档。

Spring 数据 JDBC 的 1.0 版不支持查询派生。 肯定会在不久的将来添加。

误解源于这样一个事实,即所有 Spring 数据文档都以概述原则上可用于模块的功能的一般部分开头。 这部分对于所有模块都是相同的。 然后是描述实际功能的模块特定部分。 不幸的是,不支持查询派生这一事实只能从模块特定部分中未提及的事实中推导出来。

一旦此功能到来,它很可能会支持跨实体查询,但至少在开始时仅支持跨同一聚合的实体。

聚合的概念对于Spring数据JDBC来说极其重要,这就是为什么有一个blog article about this concept and its ramifications for Spring Data JDBC,我强烈推荐阅读