В пользовательской J2EE-среде он использует концепцию динамического вычисления, в которой выведено несколько полей, а значения вычисляются на ходу и сохраняются в базе данных.
Если пользователь изменяет поле, которое вычисляется путем повторного ввода его значения, это поле не должно автоматически вычисляться с этого момента.
Есть шаблон дизайна, который может мне помочь.
Уже существуют классы POJO домена. Пожалуйста, дайте мне знать, если вопрос слишком абстрактный.
Нам нужен способ отличить, было ли поле закрыто пользователем. Простой флаг на уровне лица может помочь;
class MyEntity {
Integer userValue;
boolean isOverridden ;
public Integer getValue() {
return if(isOverridden)? userValue: calculate();
}
}
Для случая, когда есть несколько полей, я думаю, вы можете определить свои собственные DS, чтобы сохранить значение поля и использовать его для определения Enity.
Class MyEntityValue{
String name;
boolean isOveridden;
}
Хорошо, просто идея
http://randomthoughtsonjavaprogramming.blogspot.com/2013/07/formula.html
Вы можете определить 2 поля в POJO class one для значений пользователей и один рассчитанный (используя аннотацию @Formula). Если значение пользователя равно null, вы можете использовать вычисленное значение.
class MyEntity {
@Column(name="the_value")
Integer userValue;
@Formula("(select ...)")
Integer calculatedValue;
public Integer getRealValue() {
return userValue==null ? calculatedValue : userValue;
}
}
Таким образом, когда реальное значение задается пользователем, вычисленное значение игнорируется. Но вычисляемое значение оценивается в любом случае.