加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何使用spring data envers查找实体的所有修订版?

发布时间:2020-12-15 01:34:33 所属栏目:大数据 来源:网络整理
导读:我在Spring启动应用程序中使用spring-data-envers.我可以成功记录我的实体的审核. 现在,我需要在UI中向用户显示审计数据.就像搜索表单一样,用户可以选择持续时间和实体,以便查看审计日志. string-data-envers提供的RevisionRepository只有以下三种方法. @NoR

我在Spring启动应用程序中使用spring-data-envers.我可以成功记录我的实体的审核.

现在,我需要在UI中向用户显示审计数据.就像搜索表单一样,用户可以选择持续时间和实体,以便查看审计日志.

string-data-envers提供的RevisionRepository只有以下三种方法.

@NoRepositoryBean
public interface RevisionRepository

如何编写自定义查询以获取特定用户在两个日期之间对实体的所有修订.

请注意,我在user_rev_entity表中添加了其他列,用于存储用户ID和修改日期.如果我将此表与entity_aud表连接,我可以得到结果.

以下是我的Audit表的脚本.

CREATE TABLE `user_rev_entity` (
  `id` int(11) NOT NULL AUTO_INCREMENT,`timestamp` bigint(20) NOT NULL,`created_by` bigint(20) NOT NULL,`created_date` datetime NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1

CREATE TABLE `revchanges` (
  `rev` int(11) NOT NULL,`entityname` varchar(255) DEFAULT NULL,KEY `FK_et6b2lrkqkab5mhvxkv861n8h` (`rev`),CONSTRAINT `FK_et6b2lrkqkab5mhvxkv861n8h` FOREIGN KEY (`rev`) REFERENCES `user_rev_entity` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

CREATE TABLE `roles_aud` (
  `role_id` bigint(20) NOT NULL,`rev` int(11) NOT NULL,`revtype` tinyint(4) DEFAULT NULL,`description` varchar(255) DEFAULT NULL,`description_mod` bit(1) DEFAULT NULL,`display_name` varchar(255) DEFAULT NULL,`display_name_mod` bit(1) DEFAULT NULL,`is_enabled` bit(1) DEFAULT NULL,`enabled_mod` bit(1) DEFAULT NULL,`title` varchar(255) DEFAULT NULL,`title_mod` bit(1) DEFAULT NULL,PRIMARY KEY (`role_id`,`rev`),KEY `FK_pkqm51vsc35w2axvnns4bpas9` (`rev`),CONSTRAINT `FK_pkqm51vsc35w2axvnns4bpas9` FOREIGN KEY (`rev`) REFERENCES `user_rev_entity` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

因此,基本上我正在寻找特定用户在特定时间内为实体说出的所有更改.

会有更多这样的实体.

最佳答案
Spring Data Envers不支持您在spring数据jpa中习惯的自定义查询.它所做的只是提供方便的RevisionRepository接口.

但是,您可以使用修订版< N,T> findRevisions(ID id)方法并从服务层应用过滤器.这是一个例子.

@Service
public UserService {
    @Resource
    private UserRepository userRepository;

    public List

它不是一个完美的选择,因为您将从数据库中获取所有修订版本.但是,这是保持数据库抽象的最简单方法.

否则,您必须跳过Spring Data Envers并使用Envers API.

祝好运,
问候

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读