Возможно ли захватить объект (Книгу), который изменяется внутри CustomEntityTrackingListener или CustomRevisionListener?
Я пытаюсь получить всю информацию, которая передается через apis / saveBook или / update / {id} / {pages}, а не только информация о ревизии.
При аудите сущности в envers он автоматически создает таблицу _AUD для каждой сущности и таблицу ревизий для соединения сущности и ее таблицы _AUD
Используя пользовательский прослушиватель ревизии, я могу получить только информацию о ревизии, но мне бы хотелось, чтобы сама сущность изменялась и сохранялась.
...
@PostMapping("/saveBook")
public Book saveBook(@RequestBody Book book) {
return repository.save(book);
}
@PutMapping("/update/{id}/{pages}")
public Book updateBook(@PathVariable int id, @PathVariable int pages) {
Book book = repository.findById(id).get();
book.setPages(pages);
return repository.save(book);
}
...
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Data
@Audited
public class Book {
@Id
@GeneratedValue
private int id;
private String name;
private int pages;
}
@Entity
//@RevisionEntity(ExampleListener.class)
@RevisionEntity(CustomEntityTrackingRevisionListener.class)
public class ExampleRevEntity extends DefaultRevisionEntity {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
@OneToMany(mappedBy="revision", cascade={CascadeType.PERSIST, CascadeType.REMOVE})
private Set<ModifiedEntityTypeEntity> modifiedEntityTypes =
new HashSet<ModifiedEntityTypeEntity>();
}
public class ExampleListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
ExampleRevEntity exampleRevEntity = (ExampleRevEntity) revisionEntity;
//Identity identity = (Identity) Component.getInstance("org.jboss.seam.security.identity");
exampleRevEntity.setUsername("Joaquin");
}
}
public class CustomEntityTrackingRevisionListener implements EntityTrackingRevisionListener {
@Override
public void entityChanged(Class entityClass, String entityName,
Serializable entityId, RevisionType revisionType,
Object revisionEntity) {
String type = entityClass.getName();
//((CustomTrackingRevisionEntity)revisionEntity).addModifiedEntityType(type);
((ExampleRevEntity)revisionEntity).addModifiedEntityType(type);
}
@Override
public void newRevision(Object revisionEntity) {
}
}