【发布时间】:2015-03-14 21:42:29
【问题描述】:
我们需要使用 envers 来审计现有的表。我们没有hibernate.xml,而不是使用application-context.xml。我们正在通过“liquibase-changeset”创建模式,那么我如何通过@Entity 和@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">_HISTORY</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
在我的域类中添加了@Audited 注释
@Entity
@Audited
@Table(name="user")
public class User implements Serializable {
但是这个配置删除了我现有的表
例如
Mydatabase
-----------
user
product
order_details
user_role
login
我的数据库中有 5 个表。运行我的应用程序后,它显示 3 个表。它不是创建“审计”表,而是删除现有表。
Mydatabase
-----------
user
product
order_details
如何在不触及现有表的情况下创建审计(_HISTORY)表???
【问题讨论】:
-
看这里 (stackoverflow.com/questions/8573468/…),我前段时间遇到过类似的问题。
-
是映射到'user_role'和'login'表的对象
@Entity? -
Yes Rohit.. 表用“@Entity”注释
-
仍然有问题...尚未创建审计表...如何创建审计表?需要在配置中添加什么?
-
@SST 你能让这个运行吗?请看下面我的回答。
标签: java spring hibernate jpa hibernate-envers