【问题标题】:Does Spring Data JDBC support joins between entities?Spring Data JDBC 是否支持实体之间的连接?
【发布时间】:2019-03-13 18:54:18
【问题描述】:

正如我在文档中所读到的,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> {
}

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

【问题讨论】:

  • 嗨,你找到答案了吗,我也在找这个功能。

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


【解决方案1】:

恐怕您误读了文档。

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

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

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

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

【讨论】:

  • hi 现在支持查询派生,我查看了文档,没有提到“支持跨实体查询”,你知道它目前支持吗?
  • 不幸的是它仍然不支持这个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2016-03-25
  • 2019-01-26
  • 2019-04-06
  • 2018-06-20
相关资源
最近更新 更多