在自定义J2EE框架中,它使用动态计算概念,其中派生的字段很少,并且在运行中计算值并保存到数据库。
如果用户修改通过重新输入其值而计算的字段,则不应该从现在开始自动计算该字段。
是否有可以帮助我的设计模式。
已经存在域POJO类。如果问题太抽象,请告诉我。
答案 0 :(得分:1)
好的,只是一个想法
http://randomthoughtsonjavaprogramming.blogspot.com/2013/07/formula.html
您可以在POJO第1类中为用户值定义2个字段,并计算一个(使用@Formula注释)。如果用户的值为null,则可以使用计算的值。
class MyEntity {
@Column(name="the_value")
Integer userValue;
@Formula("(select ...)")
Integer calculatedValue;
public Integer getRealValue() {
return userValue==null ? calculatedValue : userValue;
}
}
因此,当用户设置实际值时,忽略计算的值。但无论如何都会评估计算出的值。
答案 1 :(得分:1)
我们需要一种方法来区分该字段是否已被用户覆盖。实体级别的简单标志可能有所帮助;
class MyEntity {
Integer userValue;
boolean isOverridden ;
public Integer getValue() {
return if(isOverridden)? userValue: calculate();
}
}
对于有多个字段的情况,我认为您可以定义自己的DS来保存字段值并使用它来定义Enity。
Class MyEntityValue{
String name;
boolean isOveridden;
}