Можно ли остановить спящий режим при автоматическом обновлении постоянного объекта?
@Transactional
public ResultTO updateRecord(RequestTO requestTO) {
Entity entity = dao.getEntityById(requestTO.getId());
// now update the entity based on the data in the requestTO
ValidationResult validationResult = runValidation(entity);
if(validationResult.hasErrors()) {
// return ResultTO with validation errors
} else {
dao.persist(entity);
}
}
Вот что происходит в коде, я извлекаю объект, который будет считаться спящим, чтобы находиться в постоянном состоянии, затем я обновляю некоторые из полей в сущности, а затем передаю объект для проверки. если проверка не выполняется, то не обманывайте, если проверка завершается успешно, а затем сохраняйте объект.
Вот основная проблема с этим потоком: поскольку я обновил сущность для ее использования в валидации, неважно, вызываю ли я метод persist() (по DAO) или нет, запись всегда будет обновлено, потому что hibernate обнаруживает, что объект был изменен, и помещает его для обновления.
Имейте в виду, я могу изменить способ проверки и решить проблему, поэтому мне не нужны обходные пути. Мне интересно узнать, как я могу отключить функцию спящего режима, когда она автоматически обновляет постоянные объекты.
Пожалуйста, имейте в виду, что я использую реализацию hibernates JPA. поэтому для Hibernate конкретные ответы, касающиеся API с гибернацией, не будут работать для меня.
Я попытался найти конфигурацию спящего режима и посмотреть, могу ли я настроить любую конфигурацию, чтобы остановить это поведение, но не повезло.
Спасибо
- ИЗМЕНИТЬ --- Я не смог найти решение для этого, поэтому я решил отказаться от транзакции, не выбрасывая какое-либо исключение RuntimeException, хотя я в декларативной транзакции, используя:
TransactionInterceptor.currentTransactionStatus() setRollbackOnly();.
который работает как шарм.