Пожалуйста, исправьте, если мое понимание неверно:
Класс обслуживания:
@PutMapping
@Transactional
public ResponseEntity setparty(@RequestBody PartyManager pmObj) {
repository.setPartyById(pmObj.getName(), pmObj.getPartyid());
return new ResponseEntity(HttpStatus.OK);
}
@GetMapping("/{id}")
public ResponseEntity<PartyManager> party(@PathVariable Long id) {
return new ResponseEntity(repository.findById(id), HttpStatus.OK);
}
Класс конфигурации:
@Configuration
public class ETagConfig {
@Bean
public Filter shallowEtagHeaderFilter() {
return new ShallowEtagHeaderFilter();
}
}
Класс сущности:
@Entity
@Table
public class Manager implements Serializable {
@Version
private Long versionid;
@Id
private Long managerid;
private String name;
}
Действия по репликации проблемы:
GET ==> Получил etag -> "0c43f39e5857832ee6049eb99b4320484"
изменил данные и сгенерировал запрос PUT ==> If-Match -> "0c43f39e5857832ee60494" b431016 *
снова изменил данные и сгенерировал запрос PUT ==> If-Match -> "0c43f39e5857832ee6049eb99b4320484" // Предполагается, что этот запрос выдает 412, но не выдает никакой ошибки, просто обновите БД и верните 200 .
Что я делаю не так, пожалуйста, поправьте меня.
Использование Spring Boot 2x, Spring Data Rest (я думаю, в него встроена поддержка ETag)