У меня есть сущность / таблица "post" с этой "схемой":
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
int id;
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer postId;
private Integer revisionId;
private Boolean isCurrentRevision;
Итак, таблица содержит сообщения, каждая из которых имеет несколько ревизий, но только одна (для каждого сообщения) является текущей.
Теперь, допустим, я хочу сохранить еще одну ревизию существующего поста (т.е. пост обновления):
Мне нужно найти максимальный существующий revisionId для этого postId, увеличить его и установить для revisionId. Кроме того, это новая текущая редакция, и поэтому она должна быть помечена соответствующим образом, но прежняя текущая редакция также должна быть помечена.
Но как я могу это сделать? Я чувствую, что это действительно должно быть частью реализации сущности, но с другой стороны, мне нужен EntityManager для этого. Но я не могу найти способ внедрить экземпляр EntityManager (который гарантированно существует).
Возможно ли это? Как вы реализуете такие сценарии? Спасибо!