我正在使用Hibernate 3.2.5创建一个Java应用程序。我正在使用Netbeans 7.2开发,数据库是MySQL 5.5。基本思想是美式橄榄球比赛。
我目前的问题在于Play
类的设计:我想将Play
与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 - 我甚至不想开始实现它。