Spring jpa - способ получить recordId из родительской таблицы при вставке в дочернюю таблицу - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть две таблицы (родитель и ребенок). В родительскую таблицу уже вставлено несколько строк. Теперь я вставляю в дочернюю таблицу.

есть ли способ в JPA Spring, где вставка в дочернюю таблицу получает соответствующий идентификатор из родительской таблицы на основе запроса.

Не хочу делать чтение вызов от к родительскому элементу и затем вставка вызова к дочернему элементу .. в поисках способа сделать это с помощью одной вставки

Ниже показано, как выглядит мое отображение из дочернего класса сущностей ....

@ManyToOne(fetch = FetchType.LAZY, targetEntity = Parent.class, cascade = CascadeType.ALL)
@JoinColumn(name = "childId", referencedColumnName = "id", nullable = false)
private Parent parent;

1 Ответ

0 голосов
/ 23 апреля 2020

Если вы знаете идентификатор PartnerCountry, вам не нужно загружать PartnerCountry.

. Вы можете позвонить getReference() в EntityManager:

ParentCountry parentCountry = entityManager.getReference(ParentCountry.class, parentCountryId);
child.setParentCountry(parentCountry);

Этот код не выберет ParentCountry из базы данных. getRefrence() возвращает прокси-сервер, который используется для установки внешнего ключа.

К сожалению, JpaRepository не предоставляет getReference (), поэтому вам необходимо внедрить EntityManager в место, где вы сохраняете дочерний элемент.

Сформировать Документы Hibernate.

getReference () получает ссылку на объект. Состояние может быть или не быть инициализировано. Если объект уже связан с текущим запущенным сеансом, эта ссылка (загружена или нет) возвращается. Если объект не загружен в текущем сеансе и объект поддерживает генерацию прокси, создается и возвращается неинициализированный прокси, в противном случае объект загружается из базы данных и возвращается.

...