我无法弄清楚如何使用Hibernate Envers和JHipster.
我正在使用PostgreSQL存储数据,最新的Jhipster 2.6.0我刚刚生成了一个JHipster应用程序,根本没有任何修改.User域类扩展了AbstractAuditingEntity类,该类具有@Audited注释,但在编辑用户时,数据库中没有创建t_user_aud表.
是否需要任何配置才能让Hibernate Envers保存修改?
我有一个github存储库,显示如何为jhipster 2.6.0的postgres添加它
生成jhipster应用程序后,创建postgres数据库,生成实体(例如yo jhipster:entity Foo),并应用所有先前的数据库修订版(运行mvn spring-boot:run以确保它运行以前的数据库修订版).
警告: 'spring-data-envers'会导致QueryDsl中断.(参见:https://github.com/spring-projects/spring-data-envers/issues/30).此外,https://github.com/spring-projects/spring-data-envers/issues/33#issuecomment-108796022表示'spring-data-envers'项目不是优先事项.Jhipster已经包含的'hibernate-envers'项目允许你使用envers而不需要'spring-data-envers'...所以如果你想避免QueryDsl问题,请跳过步骤1和3删除'spring-data-envers'.
将spring-data-envers添加到pom.xml中.
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-envers</artifactId>
<version>0.2.0.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)添加@Audited到域包中的实体类
repositoryFactoryBeanClass=org.springframework.data.envers.repository.support.EnversRevisionRepositoryFactoryBean.class到DatabaseConfiguration.java中的@EnableJpaRepositories注释(即更改行以使其类似@EnableJpaRepositories(basePackages="com.mycompany.myapp.repository", repositoryFactoryBeanClass=EnversRevisionRepositoryFactoryBean.class)mvn liquibase:diff 将生成您的更改日志以添加审核注意:liquibase-3.3.2不能识别用于postgres的autoIncrement的INT4并且会抛出它
java.lang.RuntimeException: Unknown property autoIncrement for liquibase.datatype.core.UnknownType INT4.您可以将其更改为"SERIAL",但您将与进一步生成的更改日志进行斗争.我建议升级到liquibase-3.3.3(参见https://github.com/liquibase/liquibase/commit/1602ddf1cf4968753e09a6858fc1580230a2fb44),但您还必须<liquibaseShouldRun>true</liquibaseShouldRun>在pom.xml中添加liquibase插件配置.
注意:当您运行测试时(使用H2),H2对REVTYPE要求tinyint而不是smallint.要么忽略测试,要么添加这样的东西
<changeSet author="sdoxsee" id="1426529918864-0">
<sql dbms="postgresql">CREATE DOMAIN "tinyint" AS smallint</sql>
</changeSet>
Run Code Online (Sandbox Code Playgroud)
所以H2会很开心,而postgres会很开心.否则你会得到
org.hibernate.HibernateException: Wrong column type in JHIPSTER.PUBLIC.T_FOO_AUD for column REVTYPE. Found: smallint, expected: tinyint
当你跑步 mvn test
mvn spring-boot:run 再次将应用更改日志希望这可以帮助.
我已经包含了来源:https://github.com/sdoxsee/jhipster-app-envers
一个有用的参考:
| 归档时间: |
|
| 查看次数: |
3323 次 |
| 最近记录: |