Рассмотрите возможность использования Envers .
Если вы хотите реализовать это самостоятельно, я предлагаю использовать наследование с аннотацией @MappedSuperClass
для базового типа, которое будет расширено всеми подклассами, которые можно проверить.
@MappedSuperClass
publci class BaseEntity{
@Id
Long id;
}
Чем можно сопоставить сущность с ревизией:
@OneToOne
@JoinColumn(name="fk_id")
BaseEntity entity;
@ AttributeOverride может переопределять только атрибуты аннотации @Column. Название столбца.
@ Embeded может использоваться для класса @Embedable, который не является сущностью и не имеет собственной таблицы. Поля встраиваемой воли по части владеющей сущности / таблицы