我必须模拟一种情况,其中我有一个可以是四个值之一的实体,并且这四个状态中的两个可以有附加评论。
我的第一个想法是定义一个类,它有两个成员字段,一个是 Enum,一个是 String。枚举有四个元素。但我也必须对约束进行建模,即只能在值 2 和 3 上设置注释。
你会如何建模?JPA 上的四种不同实体和继承?还是像上面的枚举示例一样?
非常感谢安德烈
我必须模拟一种情况,其中我有一个可以是四个值之一的实体,并且这四个状态中的两个可以有附加评论。
我的第一个想法是定义一个类,它有两个成员字段,一个是 Enum,一个是 String。枚举有四个元素。但我也必须对约束进行建模,即只能在值 2 和 3 上设置注释。
你会如何建模?JPA 上的四种不同实体和继承?还是像上面的枚举示例一样?
非常感谢安德烈
是的,你的解决方案没问题。只需像这样实现设置器:
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);
}
}
使用继承不是一个好主意:当一个实体具有给定的类型时,它不能变成其他的东西。因此,使用继承策略更改状态是不可能的。