1

Hibernate 3.2.5 で Java アプリケーションを作成しています。私は Netbeans 7.2 で開発しています。データベースは MySQL 5.5 です。基本的な考え方は、アメリカンフットボールの試合です。

私の現在の問題は、クラスの設計にあります。 aと aPlayをリンクしたいのですが、特定の では、 の特定のサブクラスしか受け入れられません。制約にはいくつかのタイプがあります。PlayPlayerActionPlayPlayerAction

  • 要件の制約 (「このPlayサブクラスにはこれが必要ですPlayerAction」)
  • 可能性制約 (「このPlayサブクラスはこれを持つことができるPlayerAction」)
  • 除外制約 (「このサブクラスはA と B のPlay両方を同時に持つことはできません」)PlayerAction

コード:

@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

RunningPlayPlayerActions次のタイプのみを許可できます。

  • 必要RunAction
  • TackleAction
  • FumbleAction

理想的なソリューションは、保守が容易である限り、構築が容易である必要はありません。現在の私の唯一のアイデアは、すべてのサブクラスに String[][] を返すメソッドを与えることですが、それは非常に不自由で、面倒で、オブジェクト指向ではありません。実装を開始したくありません。

4

0 に答える 0