У меня есть сервисный слой, в котором мне нужно выбрать пример данных по идентификатору и выполнить некоторую проверку, если все в порядке, тогда я обновляю его статус. После обновления состояния я извлекаю ту же строку из БД и создаю файл.
При этом после обновления из-за кеша первого уровня состояние, которое я обновляю, не обновляется при использовании метода createFile ().
Я видел обходной путь, чтобы обновить статус вручную. Но есть ли лучший способ сделать вместо обновления статуса? Заранее спасибо.
Сервисный уровень
@Override
update(String id){
Sample sample= sampleDao.findById(id);
// perform validation if all ok proceed
sampleDao.updateStatus(id, status);
createFile(id);
}
boolean createFile(String id) {
Sample sample= sampleDao.findById(id);
// Do create file as based on
}
sampleDao Layer
@Override
public Sample findById(String id) {
return sampleRepository.findById(id).orElse(null);
}
@Override
@Transactional(readOnly = false)
public boolean updateStatus(String id,Integer status) {
return this.sampleRepository.updateStatus(status, id) ;
}
sampleRepository
@Modifying()
@Query("update Sample sample set sample.status.id = :status where sample.id = :id")
Integer updateStatus(@Param("status") Integer status, @Param("id") String id);
sample Entity
class Sample {
String id;
Status status;
}
class Status {
String id;
String name;
}