Hibernate 3.2.5 で Java アプリケーションを作成しています。私は Netbeans 7.2 で開発しています。データベースは MySQL 5.5 です。基本的な考え方は、アメリカンフットボールの試合です。
私の現在の問題は、クラスの設計にあります。 aと aPlay
をリンクしたいのですが、特定の では、 の特定のサブクラスしか受け入れられません。制約にはいくつかのタイプがあります。Play
PlayerAction
Play
PlayerAction
- 要件の制約 (「この
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
RunningPlay
PlayerActions
次のタイプのみを許可できます。
- 必要
RunAction
TackleAction
FumbleAction
等
理想的なソリューションは、保守が容易である限り、構築が容易である必要はありません。現在の私の唯一のアイデアは、すべてのサブクラスに String[][] を返すメソッドを与えることですが、それは非常に不自由で、面倒で、オブジェクト指向ではありません。実装を開始したくありません。