Java 使用JPA/hibernate在数据库表中手动维护实体行版本/历史记录

Java 使用JPA/hibernate在数据库表中手动维护实体行版本/历史记录,java,database,hibernate,jpa,Java,Database,Hibernate,Jpa,我不知道在哪里问这个问题,也不知道怎么问。基本上我需要的是我有两个实体类,如果我从数据库表的角度考虑,每一行都有一个特定的列,如“S0”,它将指示应用程序的当前状态。默认情况下,我的应用程序将根据“S0”从所有表中提取数据(其中history默认为“S0”) 当我需要一个历史记录时,我获取历史记录列为'S0'的所有行,并插入值为'S1'的新行,该新行具有完全相同的其他属性(除了插入时更改的标识)。下一次像“S2”这样。S0行将保持不变 我的应用程序应该可以通过选择存档数据来加载/填充自身。喜欢加

我不知道在哪里问这个问题,也不知道怎么问。基本上我需要的是我有两个实体类,如果我从数据库表的角度考虑,每一行都有一个特定的列,如“S0”,它将指示应用程序的当前状态。默认情况下,我的应用程序将根据“S0”从所有表中提取数据(其中history默认为“S0”)

当我需要一个历史记录时,我获取历史记录列为'S0'的所有行,并插入值为'S1'的新行,该新行具有完全相同的其他属性(除了插入时更改的标识)。下一次像“S2”这样。S0行将保持不变


我的应用程序应该可以通过选择存档数据来加载/填充自身。喜欢加载历史记录为S1的应用程序

我如何使用JPA+Hibernate来管理它。在JDBC+JSP中,我曾经在每个表上都有一个列历史记录,并手动处理:copy和insert all。但我认为这是一种危险,不是一种好的做法


请给我一些建议/帮助来帮助我

你检查过环境吗

是否可以控制envers,如仅根据给定的指令进行审计,而不是每次实体更新时进行审计?我的应用程序应该可以通过选择存档数据来加载/填充自身。像加载应用程序与历史S1。