Подтвердить что ты не робот

Как сохранить объект с внешним ключом без загрузки связанного объекта в JPA?

У меня есть два объекта:

Account {
  @Id
  Long id;
}

Preference {
  ...
  @ManyToOne
  private Account account;
}

При сохранении предпочтения у меня есть accountId, но у меня нет объекта Account. Как сохранить предпочтение в этой ситуации?

Загрузите объект Account и настройте его по предпочтению? Для меня это похоже на ошибочное путешествие в базу данных.

У вас есть постоянное поле accountId и сделать поле Account доступным только для чтения? Как поле AccountId, так и поле Account кажутся излишними?

Использовать NamedQuery для сохранения предпочтений? Я надеялся всего лишь сохранить объект без специальной логики.

4b9b3361

Ответ 1

Используйте em.getReference(Account.class, accountId). Он возвращает неинициализированный прокси-сервер для объекта без перехода в базу данных. Ваш прецедент является основной причиной существования этого метода.