如何使用 JHipster 和 Hibernate Envers

2023-12-21

我无法弄清楚如何使用 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以确保它运行以前的数据库修订版)。

Warning:“spring-data-envers”导致 QueryDsl 中断。 (看:https://github.com/spring-projects/spring-data-envers/issues/30 https://github.com/spring-projects/spring-data-envers/issues/30)。此外,https://github.com/spring-projects/spring-data-envers/issues/33#issuecomment-108796022 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”。

  1. 将 spring-data-envers 添加到您的 pom.xml 中。

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-envers</artifactId>
        <version>0.2.0.RELEASE</version>
    </dependency>
    
  2. Add @Audited到域包中的实体类

  3. Add repositoryFactoryBeanClass=org.springframework.data.envers.repository.support.EnversRevisionRepositoryFactoryBean.class到 DatabaseConfiguration.java 中的 @EnableJpaRepositories 注释(即更改该行,使其类似于@EnableJpaRepositories(basePackages="com.mycompany.myapp.repository", repositoryFactoryBeanClass=EnversRevisionRepositoryFactoryBean.class)
  4. 添加扩展 DefaultRevisionEntity 的 CustomRevisionEntity 以将任何特殊内容添加到修订表中(例如,进行更改的登录名)
  5. 添加实现 RevisionListener 的 CustomRevisionListener 以设置 CustomRevisionEntity 中的字段
  6. mvn liquibase:diff将生成您的变更日志以添加审核
  7. 将变更日志添加到 src/main/resources/config/liquibase/master.xml

Note: liquibase-3.3.2 无法识别 INT4 for postgres 的 autoIncrement 并会抛出此错误java.lang.RuntimeException: Unknown property autoIncrement for liquibase.datatype.core.UnknownType INT4。您可以将其更改为“SERIAL”,但您将与进一步生成的变更日志作斗争。我建议升级到 liquibase-3.3.3 (请参阅https://github.com/liquibase/liquibase/commit/1602ddf1cf4968753e09a6858fc1580230a2fb44 https://github.com/liquibase/liquibase/commit/1602ddf1cf4968753e09a6858fc1580230a2fb44)但你还必须添加<liquibaseShouldRun>true</liquibaseShouldRun>到 pom.xml 中的 liquibase 插件配置。

Note:当您运行测试(使用 H2)时,H2 期望 REVTYPE 为tinyint 而不是smallint。要么忽略测试,要么添加类似的内容

<changeSet author="sdoxsee" id="1426529918864-0">
   <sql dbms="postgresql">CREATE DOMAIN "tinyint" AS smallint</sql>
</changeSet>

这样 H2 就会开心,postgres 也会开心。否则你会得到

org.hibernate.HibernateException: Wrong column type in JHIPSTER.PUBLIC.T_FOO_AUD for column REVTYPE. Found: smallint, expected: tinyint

当你跑步时mvn test

  1. mvn spring-boot:run再次应用变更日志
  2. 通过正在运行的应用程序创建一个实体
  3. 打开pgAdmin3可以查看审计表历史记录!

希望这可以帮助。

我已经包含了来源:https://github.com/sdoxsee/jhipster-app-envers https://github.com/sdoxsee/jhipster-app-envers

有用的参考:

  • http://hantsy.blogspot.ca/2013/11/auditing-with-hibernate-envers.html http://hantsy.blogspot.ca/2013/11/auditing-with-hibernate-envers.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 JHipster 和 Hibernate Envers 的相关文章

随机推荐

  • 如何将 javascript 连接到 .Net 中的 CustomValidator 控件

    我创建了一个 CustomValidator 控件 public class MyValidator CustomValidator IScriptControl 并创建了等效的客户端脚本 服务器验证工作正常 但是如何连接我的客户端脚本 渲
  • 在 IntelliJ IDEA 中管理 Grails 自动依赖项的源代码和 javadoc?

    如何将源代码和 javadoc 附加到 IntelliJ IDEA 中的库 这些库通过 Grails 依赖项解析自动链接 并且未在 IDEA 项目设置中明确列出 例如在BuildConfig groovy grails project de
  • 是什么导致 switch 语句中生成的 R.id.xxx 值出现“需要常量表达式”错误?

    我们有一个多项目应用程序 我们正在将其迁移到 gradle 构建会导致 Java 编译错误 例如 AFragment java 159 constant expression required case R id aBtn 我们已经确认错误
  • Pandas 数据框到 Flask 模板作为 json [重复]

    这个问题在这里已经有答案了 我尝试在烧瓶模板中输出熊猫数据框 我的想法是将其转换为json 然后循环遍历表 我测试了这个 jsonfiles df to json orient records return render template
  • 使用基于网络的在线免费 cron 安全吗?

    我的一个 ASP NET Web 应用程序中有一个邮件列表页面 我发现一个基于在线 Web 的 cron 可以在我的应用程序中每天执行一次 MailingList aspx 的 url 使用基于网络的在线免费 cron 安全吗 使用时应该注
  • 类型 存在于“A”和“B”中

    现在我知道这里已经有很多这样的问题 但是在翻阅它们之后 我还没有找到可以解决我的具体问题的问题 我有一个 ASP NET MVC 4 5 项目 我使用 NuGet 并将 Newtonsoft Json 添加到项目中 一旦我在代码中使用它 以
  • 创建粘性导航 CSS 和 jquery

    我目前正在为一个网站开发粘性导航 当导航变成时 我遇到了一些问题position fixed它似乎在跳跃 看起来 笨重 这是我想做的事情的小提琴 http jsfiddle net DKtLR http jsfiddle net DKtLR
  • 如何在 TypeScript 中使用 ES6 模块语法导入 angular.IInjectorService

    如何从 Angular IInjectorService 导入角度 d ts https github com borisyankov DefinitelyTyped blob master angularjs angular d ts使用
  • SQL - 对于 b 列中的每个值,a 列上的不同值

    我正在使用一张名为du vertrag 我正在尝试构建一个查询来选择不同的值id and status pairs 输入表 id status date 6251899 beantragt 20201008 6377042 beantrag
  • 使用 C# 解压缩 .gz 文件

    我有一个名为ZippedXmls tar gz 的焦油gunzip 文件 其中有2 个xml 我需要以编程方式解压缩该文件 输出应该是复制到文件夹中的 2 个 xml 如何使用 C 实现此目的 我使用过 Net的内置压缩流 http msd
  • Boost asio 发送和接收消息

    我正在尝试使用 TCP 从客户端和服务器发送和接收消息 我正在尝试使用线程 但我根本不知道该怎么做 我可以很好地连接到服务器 但我需要能够按需从两个地方发送和接收消息 我已经搜索了几个小时但一无所获 因为谷歌上的所有结果都过于复杂和混乱 s
  • 在 Audit.Net 中,有没有办法使用多个输出提供程序?

    我尝试设置下面的配置 但我认为只使用了其中之一 有没有办法将两者链接起来 或者有其他方法可以使用多个输出提供程序 Audit Core Configuration Setup UseElasticsearch config gt confi
  • 如何在 ubuntu 上重新安装 cassandra?

    我是 Ubutu linux Cassandra 的新手 我在我的 ubuntu 机器上使用 OpenJdk 测试了 Cassandra 有一些不错的文章解释了如何在 ubuntu 上安装 Cassandra 所以我可以这样做 我更改了一些
  • Git 中的文件级跟踪(同一目录中多个分支的文件)

    是否有任何脚本可以让人们记住某个目录中文件的单独分支 提交 以便可以同时处理同一目录中的分支 1 上的文件 1 和分支 2 上的文件 2 并让它们正确提交 如果没有我会自己实现 我的计划是为各种分支 存储库设置隐藏的签出目录 并使用这些文件
  • UITableView 中的实时搜索

    我已经实施了一个UI搜索栏用于查找其中的元素UI表格视图 一切似乎都工作正常 现在我需要对按下的每个键进行实时搜索文本域 并通过每按一次按钮来缩小搜索范围 因此 在开始编码之前 我想知道是否有任何内置库函数可以帮助我进行实时搜索 字符串比较
  • 对点进行排序,使连续点之间的最小欧氏距离最大化

    给定 3D 笛卡尔空间中的一组点 我正在寻找一种算法来对这些点进行排序 使得minimal两个连续点之间的欧几里得距离将最大化 如果算法倾向于最大化average连续点之间的欧氏距离 Edit 我已经交叉发布了https cstheory
  • 如何在 Fauna DB 中创建索引以返回键值对中的排序数据

    我正在尝试创建一个索引 该索引返回带有键的对象中的排序数据 我的集合的默认索引返回如下内容 ref Ref Collection posts 251333584234742292 ts 1583632773120000 data title
  • 如何在 Objective-C 中定义和使用 ENUM?

    我在实现文件中声明了一个枚举 如下所示 并在接口中声明了该类型的变量作为 PlayerState thePlayerState 并在我的方法中使用了该变量 但我收到错误消息 指出它未声明 如何在我的方法中正确声明和使用 PlayerStat
  • java.nio.file 的替代方案

    我在这个项目中使用 Android Studio 2 3 1 和 jdk 1 8 我导入一个项目 它使用 java nio file Files 和 java nio file Paths Java 8 中不存在包 java nio fil
  • 如何使用 JHipster 和 Hibernate Envers

    我无法弄清楚如何使用 Hibernate Envers 和 JHipster 我使用 PostgreSQL 来存储数据 最新的 Jhipster 2 6 0 我刚刚生成了一个 JHipster 应用程序 没有任何修改 User 域类扩展了