我必须对情况进行建模,其中我有一个实体,它可以是四个值中的一个,这四个状态中的两个可以有额外的注释。
我的第一个想法是定义一个类,它有两个成员字段,一个作为Enum,一个作为String。 Enum有四个要素。但我也必须建模约束,只有在值2和3上才可以设置注释。
你会如何建模? JPA上有四个不同的实体和继承?或者像上面的Enum例子一样?
非常感谢 安德烈
答案 0 :(得分:0)
是的,你的解决方案没问题。只需像这样实现setter:
public void setComment(String comment) {
if (state != State.STATE1 && state != State.STATE2) {
throw new IllegalStateException("A comment can't be set when the state is " + state);
}
}
使用继承不是一个好主意:当一个实体具有给定类型时,它不能成为其他类型。因此,使用继承策略无法改变状态。