Hibernate 休眠环境删除模式
我使用HibernateEnvers4.1.8.Final 我的环境配置: org.hibernate.envers.store_data_at_delete=true 我希望在删除基表中的记录时, 新记录将插入具有相同列和相同数据的表中。 但是没有!除revtype和rev外,未插入表aud offcource中的数据 换句话说,上述配置无法正常工作!Hibernate 休眠环境删除模式,hibernate,spring-mvc,hibernate-envers,Hibernate,Spring Mvc,Hibernate Envers,我使用HibernateEnvers4.1.8.Final 我的环境配置: org.hibernate.envers.store_data_at_delete=true 我希望在删除基表中的记录时, 新记录将插入具有相同列和相同数据的表中。 但是没有!除revtype和rev外,未插入表aud offcource中的数据 换句话说,上述配置无法正常工作! 有人能帮我吗?根据您的评论,问题在于您使用HQL来删除实体引用,而不是使用EntityManager/Session上指定的两种删除方法:
有人能帮我吗?根据您的评论,问题在于您使用HQL来删除实体引用,而不是使用EntityManager/Session上指定的两种删除方法:
session.delete(对象)
entityManager.remove(对象)
post delete
事件,因此您永远不会看到为RevisionType.DEL
条目添加REVTYPE
行
使用上述两种方法中的任何一种都可以解决您的问题
这里的驱动因素是HQL/JPQL语句可以充当批量操作,就像JPA使用CriteriaDelete
和CriteriaUpdate
的意图一样。这意味着将DML操作潜在地批量应用于数据库对象,而持久性提供程序不必将实体状态加载到持久性上下文中
考虑一下您正在尝试的用例。假设您的实体尚未从数据库加载,您只需从实体中调用DELETE,其中id=:id
。在这种情况下没有加载实体状态,因此,如果要触发事件,唯一已知的相关信息是:
- 实体类型
- 某些名为
的属性具有id
指定的给定值:id
DELETE
操作,如果该操作是针对大量行的话
希望这能让您了解为什么会看到您所做的事情。您能介绍一下如何将此属性传递到Hibernate吗?它是来自hibernate.properties文件还是通过一些spring配置?在appContext-hibernate.xml中:如果使用属性配置在类路径的根目录中创建hibernate.properties文件并重试,则为true。您的方案是否可行?是的,我在类路径的根目录中创建了它,但它不起作用!如何删除数据?