我想跟踪对特定表中每个列所做的更改。我想过将更改存储在另一个表中,其中包含以下列:id, field, and data
其中field
(字符串值)是目标表中已更改的列,data
是新值那个领域。
当返回数据集时,我想到从目标表中检索原始数据并从表跟踪更改中更改的值,然后使用java的反射功能将更改的字段值设置为最新更改的值。
基于以上所述,我有以下问题:
由于
答案 0 :(得分:3)
检查Hibernate envers和Eclipselink历史会话以进行实体审核。 JPA 2.0规范没有任何与实体审核有关的内容..
答案 1 :(得分:1)
你的方法很好。您可能需要许多“数据”字段来涵盖各种数据类型(例如日期,文本,长文本)。
我如何解决这个问题(但也很容易提供回滚功能)是使用xstream和文本差异引擎。我使用xstream来获取pojo的xml快照,然后应用用户的编辑然后抓住另一个。我将两个快照区分开来并存储差异文本。另外,通过一些努力,我可以用维基风格打印修改。