Имена методов запроса Spring-Data JPA для объединенных сущностей

У меня две сущности:

  1. User (имеет поле String userName);
  2. School (имеет поле Long id);

В School у меня есть:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, targetEntity = User.class)
@JoinColumn(name = "schoolId")
private List<User> users;

В User у меня есть:

@ManyToOne(optional = false, targetEntity = School.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name = "schoolId", referencedColumnName = "id", nullable = false)
private School school;

Еще у меня SchoolRepository:

public interface SchoolRepositoryextends CrudRepository<School, Long> {
}

И я хочу сделать запрос к базе данных по именам методов запроса JPA. Например, я хочу найти всех пользователей с именем John в школе с id = 1. Как это сделать через SchoolRepository?

Единственное, что мне приходит в голову, это findByIdAndUsersUserName, но это дает мне исключение: в моей таблице users нет поля с именем schools.

ПРИМЕЧАНИЕ:

конечно, это возможно через @Query, но мне интересно, есть ли способ сделать это через method names.

Вы имеете в виду весенние данные jpa? docs.spring.io/spring-data/jpa/docs/current/reference/html/…

PDStat 12.04.2018 11:45

В самом деле, это не JPA API. Это весна. SPRING DATA JPA! = JPA API

user8558216 12.04.2018 11:48

Да, ты прав, спасибо.

htshame 12.04.2018 11:48

Сделать это можно только в UsersRepository. selectByNameAndSchool

Den B 07.06.2018 12:53

@DenB Ключевое слово And предназначено для and с множественным условием для where. проверьте 6.3.2 из docs.spring.io/spring-data/jpa/docs/current/reference/html/…

Ratul Sharker 24.11.2020 17:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
5
1 385
0

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