当前位置: 首页 > 知识库问答 >
问题:

按修订日期查询Hibernate Envers修订

喻高寒
2023-03-14

我已经开始使用Hibernate Envers来审计日志业务对象。我已经阅读了文档,从我看到的所有例子来看,查询都是通过修订号来完成的。

我想按修改日期查询,即获取在特定日期或日期范围内发生的被审计实体的所有行。这种事情可能吗?

我的 revinfo 表保存一个时间戳,所以我知道数据在那里。

共有2个答案

桂学
2023-03-14

使用审计阅读器并为您的日期添加查询参数。该属性称为时间戳。此示例使用包含开始日期和独占结束日期。

 List<Object[]> revisions = (List<Object[]>) getAuditReader().createQuery()
                .forRevisionsOfEntity(YourEntityClass.class, false, true)
                .add(AuditEntity.revisionProperty("timestamp").ge(startDate))
                .add(AuditEntity.revisionProperty("timestamp").lt(endDate))
                .getResultList();
龚运乾
2023-03-14

是的,这当然是可能的。您只需获取与日期相对应的修订版号即可。

这可以通过直接查询修订表或使用AuditReader实现。getRevisionForDate方法。

 类似资料:
  • 问题内容: 我试图使功能超出其书面限制,我需要的不仅仅是当前支持的alpha排序。我需要对结果进行排序,以按修改日期排序。 我尝试了一些在这里找到的解决方案,以及其他来自不同网站的解决方案,但是没有一个适合我,因此我认为在这里发布是合理的。 到目前为止,我尝试过的是: 但是,这似乎对我不起作用,它仅返回3个结果,但应该返回16个结果,因为文件夹中有16张图像。 问题答案:

  • 问题内容: 我在集合中将值存储为java.util.Date(),但是当我查询以获取两个特定日期之间的值时,最终得到的值超出了范围。这是我的代码: 插入 查询 当我在和之间查询时(基本上是fromDate = toDate),我得到的日期绝对不可能的对象。我在这里想念什么? 问题答案: 您正在执行的操作是仅在键覆盖中使用丢失运算符进行查询。您想要的是:

  • 据我所知,Hibernate Envers会在您创建,更改或删除带有@Audited注释的对象时存储修订版。 Envers自动将修订日期设置为当前时间。是否可以手动设置此时间? 我需要用它来处理一个数据有有效时间的时态集合,这需要手动设置。

  • 我尝试创建一个查询,显示入住和退房日期之间的可用酒店。此外,当我为特定房间预订时,我将他们的预订列设置为1。这意味着,在现实生活中,当结账日期到来时,触发函数将该预订列设置成0。 如果酒店的所有房间都已预订(预订=1),并且这些房间的签入-退房日期是特定日期(签入-退房输入),则不要将该酒店放在列表中。我的查询不会显示我想要的结果。 查询:输入:国家(状态)、签入和签出。 当我运行查询时,它总是显

  • 我需要帮助查询与日期范围的长收集。请参阅下面的示例文档。我想用日期范围查询startTime字段。

  • 修订记录 时间 版本 备注 2017-08-01 1.0 安装、基本功能测试