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

前端之家收集整理的这篇文章主要介绍了如何使用spring data envers查找实体的所有修订版?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在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.

祝好运,
问候

原文链接:https://www.f2er.com/spring/432460.html

猜你在找的Spring相关文章