我们目前正在讨论我们的版本控制策略。 我们查看了Hibernate Envers,首先它看起来对我们有用。
但现在我们正在解决由复杂数据结构引起的问题。
我们有很多我们希望进行版本控制的表格相互引用。
Foo
引用bar
,多次引用user
。所有这些表都应该成为一个历史表,如'Foo_log','bar_log'和user_log
。
使用hibernate Envers可以正常工作,它会像原始表一样创建日志表,并创建一个修订表。日志表具有修订版ID和修订版类型。
我们现在的问题是,我们希望能够为过去创建新的条目,并且我们当前的策略不再适用。
示例1:
应该为过去创建 Foo
,比如2015年1月1日。引用的bar
和'用户'应该是2015年1月1日有效的条目。
示例2:
应该为过去创建 Foo
,比如2015年1月1日。
还应为2015年1月1日创建新的bar
,并在Foo
中引用。
user
应该是2015年1月1日有效的条目。
我们的想法是在2015年1月1日之前找到下一个版本ID,并按该版本ID获取引用的条目。这仅在我们能够在其间创建修订版ID时才有效。
修订信息:
| REV ID | DateTime |
+----------+-------------+
| 1 | 01.01.2001 |
| 2 | 01.01.2002 |
| 3 | 01.01.2004 |
| 4 | 01.01.2011 |
现在我们必须为2009年1月1日创建一个修订版,以便我们必须为修订版ID设置步骤:
修订信息:
| REV ID | DateTime |
+----------+-------------+
| 1 | 01.01.2001 |
| 11 | 01.01.2002 |
| 21 | 01.01.2004 |
| 31 | 01.01.2011 |
现在我们可以使用REV ID 22为01.01.2009创建一个条目。 这有一个问题,即我们可能用完了REV ID来创建过去的条目。
您有任何建议或其他想法吗?