java - Spring Data JDBC 是否支持实体之间的连接?

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

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

例如: findByProperty(属性属性)

我的问题:

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 Data JDBC 1.0 版本不支持查询派生。 它肯定会在不久的将来添加。

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

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

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

关于java - Spring Data JDBC 是否支持实体之间的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52713500/

相关文章:

java - 通过 Spring CLI 添加对现有项目的依赖项

java - ArrayList<String> 类型中的方法 add(String) 不适用于arguments()

java - JMX:访问运行 JVM 的文件系统的标准能力

java - AbstractMap 的 containsValue() 方法实现

java.lang.NoClassDefFoundError : Could not initialize class org. aspectj.weaver.reflect.ReflectionWorld 错误

java - 使用@Formula hibernate ManyToOne

java - Spring登录系统

java - 您当前使用的是工具 API 版本 2.2.1。您应该将您的工具 API 客户端升级到版本 3.0 或更高版本

spring-boot - 在Spring Cloud Config中,curl客户端如何工作?

java - 使用 Junit 测试 Spring Boot 应用程序(需要 Autowiring 构造函数的类的测试方法)