и jdbcTemplate?
В общем, есть условная логика, которая выполняется через jdbcTemplate. А именно там происходит обновление:
UPDATE my_entity SET id = ...;
В другом месте используется уже JPA, вытягивается энтити через query стандартным путём. И можно даже написать условный тестик на такой сценарий:
@Test
fun test() {
myRepository.save(Entity(...))
jdbcTemplate.execute("UPDATE my_entity SET id = ...;")
val persistedAndNotFlushed = myRepository.findById(...)
}
И в общем-то проблема состоит в том, что возвращается не обновлённый объект (с точки зрения JPA). Как я понимаю, такое происходит из-за того, что для jpa не проиходит flush операции, ведь во всех квери с обновлением не просто так стоит аннотация @Modifying. Вопрос: это никак не лечится простым путём?
хибер не запрашивает сущность второй раз а берёт её из кеша, сделай refresh сущности
Это если транзакция открыта
Что ты понимаешь под рефрешом? Это разные точки в коде
entityManager.refresh() не важно какие точки кода, главное сессия и транзакция гугли жизненный цикл сущности и кеширование
Ну не мой случай. Чтение в JPA, сохранение через jdbc temple.
Это у тебя в одной транзакции или нет?
Обсуждают сегодня