jjzjj

java - Hibernate Envers 因 @Converter 和 AttributeConverter (JPA 2.1) 而失败

我在Envers和MySql5.6中使用Hibernate4.3.4。如果没有JPA2.1转换器,下面的Party实体将在Configuration.buildSessionFactory()处失败,因为Hibernate不知道如何处理名称类:@Entity@AuditedpublicclassParty{protectedNamename;...}异常(exception)情况是:org.hibernate.MappingException:Couldnotdeterminetypefor:ModuloADM.Party.Name,attable:Party,forcolumns:[

java - Spring + Hibernate + Envers + 多线程 - session 关闭

我们使用Hibernate(带有JPA)和HibernateEnvers来保存对象的历史记录。Web应用程序运行许多线程,其中一些是由其他应用程序调用RMI方法创建的,一些是由应用程序本身创建的,还有一些是为处理http请求(它们生成View)而创建的。我们还使用OpenSessionInView模式来管理session,因此我们的web.xml包含:openEntityManagerInViewFilterorg.springframework.orm.jpa.support.OpenEntityManagerInViewFilteropenEntityManagerInViewFi

java - 我可以使用 Liquibase 创建 Hibernate Envers 特定表吗

我们的Java应用程序是基于Spring的,我们有域类和通过Liquibase生成的相应模式。我们计划添加对要审核的单个域的支持。一个。我们没有hibernate.xml和hibernate.cfg.xml,而是使用application-context.xml。那么如何通过@Audited之类的注解来创建审计表。我该如何解决这个问题?我已将hibernate配置添加为org.hibernate.dialect.MySQLInnoDBDialectorg.hibernate.ejb.event.EJB3PostInsertEventListener,org.hibernate.enve

带有QueryDSL更新的Hibernate Envers

Hibernate,HibernateEnvers和QueryDSL已配置并在SpringBoot中正确工作1.4.1.RELEASE.问题是使用UpdateClauseupdateQueryBuilder=queryFactory.update(collectionTransaction);为了构建更新查询并执行该更新查询,HibernateEnvers不会捡起并审核这些更改。以下是实现queryDSL的弹簧数据JPA存储库publicclassCollectionTransactionRepositoryImplextendsQueryDslRepositorySupportimpleme

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

我在我的springboot应用程序中使用spring-data-envers。我可以成功地记录对我的实体的审计。现在,我需要在UI中向用户显示审核数据。就像会有一个搜索表单,用户可以在其中选择他想要查看审计日志的持续时间和实体。string-data-envers提供的RevisionRepository只有以下三个方法。@NoRepositoryBeanpublicinterfaceRevisionRepository>{/***Returnstherevisionoftheentityitwaslastchangedin.**@paramidmustnotbe{@literaln

java - 使用 envers 列出每个实体的最新版本

我正在尝试检索尚未删除的所有实体的最新版本。使用子选择在SQL中执行此操作非常简单:select*fromarticle_audaud1whererevin(selectmax(rev)fromarticle_audaud2whereaud1.id=aud2.id)andrevtype但我不知道如何通过enversAPI实现它。我从AuditReader开始,但没有找到选择不同对象的方法publicListfindLatestArticleRevisions(){Listresults=(List)getJpaTemplate().execute(newAuditReaderCallb

java - 使用 hibernate-envers 时,AUD 表中的所有 @Version 字段均为 null,但在实体中 - 表已填充好吗?

有应用spring+jpa+envers(hibernate)envers需要将实体的历史保存在特殊的表中。在我保存了几次我的实体之后,我希望看到USER表中的填充版本字段和USER_AUT中的填充版本字段。但实际结果在USER表中是正确的值,但在版本列中添加了REV_TYPE、REV列(在字段中只是couter的所有行)和null。我用的是4.0.1.Finalhibernateorg.hibernatehibernate-envers4.0.1.Finalorg.hibernatehibernate-entitymanager4.0.1.Final但是,当我查看表时,Version

java - 在 Hibernate Envers 中获取以前版本的实体

我有一个由Hibernate加载的实体(通过EntityManager):Useru=em.load(User.class,id)该类(class)由HibernateEnvers审核。如何加载以前版本的用户实体? 最佳答案 这是找到相对于“当前”修订号的先前修订的另一个版本,因此即使您正在查看的实体不是最新修订也可以使用它。它还处理没有先前修订的情况。(em被假定为先前填充的EntityManager)publicstaticUsergetPreviousVersion(Useruser,intcurrent_rev){Audit

java - Envers 如何处理架构更改?

我正在考虑从自行实现的版本控制解决方案切换到HibernateEnvers,但我还不太确定。我已经阅读了很多相关内容,但我担心架构更改以及Envers在根据旧架构对数据进行历史化处理后如何处理这些更改。在这方面,您对Envers有何看法?您如何使用Envers处理模式更改和现有数据?更新1:这不仅仅是从表中添加删除简单的列,而是例如当将一个简单的Forein-Key-Relationship更改为具有两个1:n关系(具有属性列的M2M)的单独实体时。这是数据模型中的“逻辑”更改。使用Envers时如何处理,当有已经根据旧模型对数据进行历史化了吗?是否有替代方法来手动编写sql脚本并将它

java - Hibernate Envers 将数据恢复为一个版本

我们正在使用Hibernateenvers来存储数据的历史修订,需要将数据恢复到某个修订。由于我们使用Version列来使用乐观锁定方法,因此当我尝试保存以前修订版的数据时,我得到了StaleObjectException。有什么方法可以强制Hibernate存储以前修订版的数据吗? 最佳答案 这是一个很棒的问题。我在envers文档中没有找到类似的内容,但我确信这是一个常见问题。作为解决方法,您可以在所需的对象修订版上设置属性(例如在构造函数中) 关于java-HibernateEnv