У меня есть две спящие сущности, называемые Альфа и Бета, и Альфа имеет связь *-к-одному с Бетой.Я хотел бы создать новую запись Alpha в базе данных со ссылкой на существующую бета-версию.У меня есть основной идентификатор бета-записи, которую я хочу связать, но у меня нет фактического экземпляра.В настоящее время я храню Alpha следующим образом (используя Spring HibernateTemplate):
Alpha alpha = new Alpha();
alpha.setBeta(hibernateTemplate.load(Beta.class, betaId));
hibernateTemplate.save(alpha);
Однако я бы хотел избежать первой загрузки Beta, так как это ненужный запрос (мне не нужна alpha.getBeta () для хранения обновленной присоединенной сущности - в идеале Hibernate должен заменить ее прокси-сервером, например, с отложенной загрузкой).Поэтому я попробовал следующее (имейте в виду, что существует бета-запись с betaId):
Alpha alpha = new Alpha();
Beta beta = new Beta(betaId);
alpha.setBeta(beta);
hibernateTemplate.save(beta);
Это работает, но ведение журнала показывает, что Hibernate все еще идет и запрашивает бета-версию в бэкэнде.Еще хуже, если для этой ассоциации настроен каскад, пустая бета-запись перезапишет существующую.
Итак, есть ли способ создать или обновить такую ассоциацию, просто предоставив внешний ключ и без необходимости использования Hibernate?запросить связанную таблицу?В идеале я хотел бы повторить что-то вроде этого оператора SQL:
UPDATE alpha SET beta_id = :beta_id WHERE alpha_id = :alpha_id