Как добавить комментарий в ревизионную сущность?

1

Я хочу добавить комментарий к моей ревизионной сущности, но я не знаю, как это сделать, потому что я не знаю, как передавать данные в 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?
   }

}

Как мне это сделать?

Теги:
hibernate
hibernate-envers

2 ответа

2

Я бы использовал переменную ThreadLocal для хранения комментария. метод updateFoo установит его, и класс RevisionWithComment получит значение и скопирует его текущее значение для объекта.

  • 0
    Я думал об этом решении, но оно довольно уродливо. Кроме того, я не уверен, будет ли это работать в случае обновления многих объектов.
  • 1
    Прослушиватель ревизий является объектом, управляемым гибернацией, поэтому обычно вам нужно выполнить статический поиск или использовать локальный поток для передачи данных. Если в одной транзакции обновляется много сущностей, это должно происходить в одном потоке, поэтому этот подход будет работать.
0

Вы можете достичь этого с помощью AOP Введение. Таким образом вы можете добавить поле комментариев через введение. Вы можете больше узнать о AOP в официальной документации Spring: http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню