我正在使用 Hibernate 3.2.5 创建一个 Java 应用程序。我在 Netbeans 7.2 中开发,数据库是 MySQL 5.5。其基本理念是美式橄榄球比赛。
我目前的问题在于Play
类的设计:我想将 aPlay
与 a链接PlayerAction
,但在任何给定的 上Play
,只能接受的某些子类PlayerAction
。有几种类型的约束:
- 需求约束(“这个
Play
子类必须有这个PlayerAction
”) - 可能性约束(“这个
Play
子类可以有这个PlayerAction
”) - 排除约束(“这个
Play
子类不能同时具有PlayerAction
A 和 B”)
代码:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Play implements Countable, Serializable, Locatable {
@OneToMany(cascade=CascadeType.ALL, mappedBy="play")
private List<PlayerAction> actions;
}
例如,我的班级PassingPlay
只能允许PlayerActions
以下类型:
PassAction
ReceptionAction
SackAction
InterceptionAction
SackAction
排除ReceptionAction
RunningPlay
只能允许PlayerActions
以下类型:
- 必需的
RunAction
TackleAction
FumbleAction
等等
只要易于维护,理想的解决方案不必易于构建。我目前唯一的想法是给每个子类一个返回 String[][] 的方法,但这太蹩脚、笨重且非 OO——我什至不想开始实现它。