1

我正在使用 Hibernate 3.2.5 创建一个 Java 应用程序。我在 Netbeans 7.2 中开发,数据库是 MySQL 5.5。其基本理念是美式橄榄球比赛。

我目前的问题在于Play类的设计:我想将 aPlay与 a链接PlayerAction,但在任何给定的 上Play,只能接受的某些子类PlayerAction。有几种类型的约束:

  • 需求约束(“这个Play子类必须有这个PlayerAction”)
  • 可能性约束(“这个Play子类可以有这个PlayerAction”)
  • 排除约束(“这个Play子类不能同时具有PlayerActionA 和 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——我什至不想开始实现它。

4

0 回答 0