【发布时间】:2011-03-14 18:14:23
【问题描述】:
我有一个抽象的MappedSuperClass,Participant,它由三种'Participant'扩展而来。然后每个人都使用自己的“项目”,也是一个抽象的 MappedSuperClass。但是,我希望基类了解项目,以便我可以编写通用代码来与参与者交互。如何使用 Hibernate 注释指定这一点?以及如何在 ExtendedParticipant 和 ExtendedProject 类中覆盖它?
每种参与者类型和每种项目类型都有自己的数据库表,其中包含我无法更改的现有数据和 ID(在表中不是唯一的)。
下面的代码给了我 IDE 错误“多对一属性不应该是'映射超类'”。
@MappedSuperclass
public abstract class Participant implements Persistable {
...
@ManyToOne
@JoinColumn(name = "project_id")
public Project getProject() {
return project;
}
public void setProject(Project project) {
this.project = project;
}
...
}
Project 类与同样的问题大同小异:
@MappedSuperclass
public abstract class Project implements Persistable {
...
@OneToMany
public List<Participant> getParticipants() {
return participants;
}
public void setProject(List<Participant> participants) {
this.participants = participants;
}
...
}
【问题讨论】:
标签: java hibernate annotations