Поддерживает ли 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, которую я настоятельно рекомендую прочитать.