Я хочу добавить комментарий к моей ревизионной сущности, но я не знаю, как это сделать, потому что я не знаю, как передавать данные в RevisionListener
или EntityTrackingRevisionListener
.
Мой объект ревизии выглядит следующим образом:
@Entity
@RevisionEntity
public class RevisionWithComment extends DefaultRevisionEntity {
private String comment;
/*Normal Hibernate stuff for defining 'comment' as column goes here.*/
}
У меня также есть сущность Foo
и запрос, который мутирует некоторые foos. Я хотел бы иметь возможность добавлять произвольные комментарии к новым версиям:
public class FooService {
public void updateFoo( DataForUpdate dataForUpdate, String reasonForChange) {
//First select and update some foos
//Now add comment to the new revisions - but how do I do that?
}
}
Как мне это сделать?
Я бы использовал переменную ThreadLocal для хранения комментария. метод updateFoo установит его, и класс RevisionWithComment получит значение и скопирует его текущее значение для объекта.
Вы можете достичь этого с помощью AOP Введение. Таким образом вы можете добавить поле комментариев через введение. Вы можете больше узнать о AOP в официальной документации Spring: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html