Таким образом, кажется, что в JPA нет способа присоединить устаревшую отдельную сущность.
merge()
переведет устаревшее состояние в БД,
и перезаписать все промежуточные обновления.
refresh()
не может быть вызвано на отдельном объекте.
lock()
нельзя вызвать на отдельном объекте,
и даже если бы он мог, и он снова прикрепил объект,
вызов 'lock' с аргументом 'LockMode.NONE'
подразумевая, что вы блокируете, но не блокируете,
это самая нелогичная часть дизайна API, которую я когда-либо видел.
Итак, вы застряли.
Есть метод detach()
, но нет attach()
или reattach()
.
Очевидный шаг в жизненном цикле объекта вам недоступен.
Судя по количеству похожих вопросов о JPA,
кажется, что даже если JPA действительно утверждает, что имеет согласованную модель,
это, безусловно, не соответствует ментальной модели большинства программистов,
которые были прокляты тратить много часов, пытаясь понять
как заставить JPA делать самые простые вещи и получить кеш
Код управления во всех их приложениях.
Кажется, единственный способ сделать это - сбросить свою несвежую отстраненную сущность
и сделайте запрос на поиск с тем же идентификатором, который попадет в L2 или DB.
Mik