Поддерживает ли Spring Data JDBC соединения между сущностями?

Как я прочитал в документации, 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> {
}

Я хочу найти всех людей, у которых есть хотя бы одна красная машина. Будет ли этот метод давать правильный результат?

1 ответ

Решение

Боюсь, вы неправильно прочитали документацию.

Вывод запроса не поддерживается в версии 1.0 Spring Data JDBC. Это, безусловно, будет добавлено в недалеком будущем.

Недоразумение связано с тем, что вся документация Spring Data начинается с общей части, в которой описаны принципиально доступные функции для модулей. Эта часть одинакова для всех модулей. А затем модуль специфическая часть, которая описывает реальные функции. К сожалению, тот факт, что Query Derivation не поддерживается, можно вычесть только из того факта, что он не упоминается в специальной части модуля.

Как только эта функция появится, она, скорее всего, будет поддерживать запросы между объектами, но, по крайней мере, в начале, только между объектами одного агрегата.

Концепция агрегатов чрезвычайно важна для Spring Data JDBC, поэтому в блоге есть статья об этой концепции и ее последствиях для Spring Data JDBC, которую я настоятельно рекомендую прочитать.

Другие вопросы по тегам