这里是我的使用情况
我有两个实体:Personn和电子邮件(一@OneToMany关系)。 他们都进行审核。
首先,我创建一个新的Personn,用电子邮件(=>他们都有一个修订版1),然后我修改了电子邮件(=>的电子邮件有第2次修订,但Personn只有一个版本1)
在Web应用程序的最终用户只有一个视图来显示Personn的attributs也是自己的电子邮件attributs。 在这种观点我想说明这个Personn所有现有的版本。 但是,当我查询审核系统,它不会因为Personn没有被修改告诉我修改2。
我理解的技术问题,但在视最终用户的角度,他希望看到第2次修订,因为他修改了personn的电子邮件! 他不知道(而且不必知道),我们deciced划分这些信息转换成2个Java对象。 当然,这个问题不仅是Personn电子邮件的关系(我有很多这是在同一个视图中显示Personn和其他对象之间的关系 - ADRESS,工作,网站,卡,等等)
我想到了2种解决方案:
1查询所有关系知道,如果一个版本存在(但我想它会产生一个很大的请求或多个请求 - 我已经得到了很多关系)。
2 - 设置“hibernate.listeners.envers.autoRegister”为假,写我自己EnversIntegrator和事件的实现。 在事件实现(其覆盖默认Envers实现),当电子邮件的attributs已被修改,我将创建一个Personn ModWorkUnit(它不会被硬编码课程:perharps像@AuditedPropagation自定义注释上personn场)。 这种解决方案的缺陷是创造了很多一排Personn即使它没有被修改。
你怎么看待这些解决方案是什么? 你知道一个更好的办法来解决那种用例吗?
感谢您的建议。