Сохранить объект с помощью JPA, не зная родительского объекта - PullRequest
0 голосов
/ 14 октября 2019

У меня есть 2 сущности в моем репозитории JPA, Студент и Учитель. Когда я нахожу студента с помощью метода поиска, я хочу, чтобы соответствующий учитель также был заполнен. Но когда я сохраняю объект Student, у меня есть только соответствующий teacher_id, у меня нет всего соответствующего объекта Teacher. Я мог бы сделать findById, используя teacher_id, но это оказывается дорогостоящим, так как у меня есть много объектов Student для сохранения, и каждое сохранение приведет к 2 вызовам БД.

@ManyToOne
@JoinColumn(name="teacher_id")
private Teacher teacher;

1 Ответ

0 голосов
/ 14 октября 2019

Как показывают комментарии, я бы выбрал новый вызов и загрузил весь объект Учитель, назначил его объекту Студент и затем сохранил его. Подумайте, что вам это понадобится, если у вас есть бизнес-ограничения, например, максимальное количество учеников на одного учителя.

При этом, чтобы ответить на ваш вопрос, вы можете добавить новый метод в свой JpaRepository с помощью пользовательской вставки @Query,Нечто похожее на то, что объясняется здесь:

https://www.baeldung.com/jpa-insert

Нечто похожее на это:

@Transactional
public void insertWithTeacherId(Student student, long teacher_id) {
    entityManager.createNativeQuery("INSERT INTO student (id, teacher_id) VALUES (?,?)")
      .setParameter(1, student.getId())
      .setParameter(2, teacher_id)
      .executeUpdate();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...