Чтение объектов из базы данных и их сохранение основаны на двух разных аннотациях.
Когда вы загружаете объект, он также получает другой конец любых нетерпеливых (FetchType.EAGER
) отношений, как определено свойством fetch в отношении.
В зависимости от вашего провайдера JPA, у вас могут быть варианты переопределить это поведение. EclipseLink, через невероятно полезную QueryHint.BATCH
, безусловно, делает.
Когда вы сохраняете, удаляете или обновляете информацию, каскадный тип имеет значение.
Итак, потеряйте каскад, сохраните выборку и проблему решите.
Лично я думаю, что все каскады напрашиваются на неприятности, но мнения будут разными.
У приличного поставщика JPA уже будет довольно сложная (настраиваемая) схема кэширования. Возможно, вам следует спросить, почему вы изобретаете именно это колесо?
Это проблема асинхронных обновлений исключительно для повышения производительности? Или причина в чем-то другом?