首先是基本事实:Java webapp、Spring、Hibernate、MySQL。
情况是我有一个复杂的对象模型,例如Car。它由许多对象(引擎、轮胎……)组成,它们之间具有多对一和一对多的关系。
现在有很多汽车,不时有人检查汽车并创建检查报告。报告是指汽车的许多部件,显示它们的属性等。
到目前为止,该系统还不支持在将汽车及其部件的属性输入系统后对其进行更新的能力。这意味着如果底盘颜色或轮胎数量发生变化,旧报告将反映这种变化,这不是我们想要的。
好吧,现在这个功能已经被请求了。汽车及其零件需要可修改,并且必须创建版本历史。旧报告需要参考旧版本的零件及其值。
我一直在研究“缓慢变化的尺寸”,似乎汽车及其零件的版本控制可以通过 Type 6 方法完成。
我无法弄清楚的事情(扭曲)(可能是由于我有限的 Hibernate 经验)是这样的:
如何使用 Hibernate 组装我的 Report 实例,以便它们引用汽车每个部分的正确版本?这些报告有一个日期,并且每个版本的汽车零件在有效时都会有日期范围,所以我想我可以使用一些复杂的 HQL/SQL 来完成。但是有没有更简单、更自动化的方式来使用 Hibernate 呢?