SST*_*SST 12 java spring hibernate jpa hibernate-envers
我们需要使用envers审核现有表.我们没有hibernate.xml而不是使用application-context.xml.我们通过"liquibase-changeset"创建模式,然后如何通过@Entity和@Audited等注释创建.
我该如何解决这个问题?
我添加了hibernate配置喜欢
<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>
Run Code Online (Sandbox Code Playgroud)
在我的域类中添加了@Audited注释
@Entity
@Audited
@Table(name="user")
public class User implements Serializable {
Run Code Online (Sandbox Code Playgroud)
但是这个配置删除了我现有的表
例如
Mydatabase
-----------
user
product
order_details
user_role
login
Run Code Online (Sandbox Code Playgroud)
我的数据库中有5个表.运行我的应用程序后,它显示3个表.它不删除创建"审计"表,而是删除现有表.
Mydatabase
-----------
user
product
order_details
Run Code Online (Sandbox Code Playgroud)
如何在不触及现有表的情况下创建审计(_HISTORY)表???
尝试更改 DDL 策略:
<prop key="hibernate.hbm2ddl.auto">create</prop>
Run Code Online (Sandbox Code Playgroud)
到:
<prop key="hibernate.hbm2ddl.auto">update</prop>
Run Code Online (Sandbox Code Playgroud)
更新DDL 生成策略不应删除任何现有表。
| 归档时间: |
|
| 查看次数: |
8797 次 |
| 最近记录: |