Наше Java-приложение основано на Spring, и у нас есть классы домена и соответствующая схема, сгенерированная с помощью Liquibase.Могу ли я создать Hibernate Envers конкретные таблицы, используя Liquibase
Мы планируем добавить поддержку для отдельного домена, подлежащего аудиту.
a. У нас нет hibernate.xml и hibernate.cfg.xml, вместо этого мы используем application-context.xml. Затем как создать таблицу аудита с помощью аннотаций, таких как @Audited.
Как решить эту проблему? Я добавил спящий режим конфигурации, как
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.ejb.event.post-insert">org.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.post-update">org.hibernate.ejb.event.EJB3PostUpdateEventListener,org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.post-delete">org.hibernate.ejb.event.EJB3PostDeleteEventListener,org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.pre-collection-update">org.hibernate.envers.event.AuditEventListener</prop>
<!-- <prop key="hibernate.ejb.event.pre-collection-remove">org.hibernate.envers.event.AuditEventListener</prop>
<prop key="hibernate.ejb.event.post-collection-recreate">org.hibernate.envers.event.AuditEventListener</prop> -->
<prop key="org.hibernate.envers.revision_field_name">REV</prop>
<prop key="org.hibernate.envers.revision_type_field_name">REVTYPE</prop>
<prop key="org.hibernate.envers.auditTablePrefix"></prop>
<prop key="org.hibernate.envers.auditTableSuffix">_AUD</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
Добавлено @Audited аннотаций в моем домене класса
@Entity
@Audited
@Table(name="user")
public class User implements Serializable {
Но эта конфигурация не создавать таблицы аудита в среде разработки. Неясно, какую дополнительную конфигурацию мне не хватает.
b. Как я должен создать необходимую схему с помощью Liquibase, производственная команда не устраивает идею автоматического создания схемы SQL, а также в производственной среде.
Вы можете вручную создать таблицы аудита при использовании Envers. Поэтому, я думаю, вам нужно добавить конфигурацию в Liquibase для создания этих таблиц. – Rohit
Спасибо за ваш ответ !! Если я создаю таблицу аудита вручную, то как мне заполнить при обновлении любых полей в исходной таблице? – SST
Какая версия Hibernate вы используете? С 4 вам не нужна специальная конфигурация для включения аудита, достаточно добавить банку. – adamw