Hibernate Mapped Superclass关系和覆盖

And*_*rew 7 java annotations hibernate

我有一个抽象的MappedSuperClass,参与者,它由三种"参与者"扩展.然后每个人都使用自己的'Project',也是一个抽象的MappedSuperClass.但是,我希望基类了解Projects,这样我就可以编写通用代码来与Participants进行交互.如何使用Hibernate注释指定它?以及如何在ExtendedParticipant和ExtendedProject类中覆盖它?

每个Participant类型和每个Project类型都有自己的数据库表,其中包含我无法更改的现有数据和ID(在表中不唯一).

以下代码给出了IDE错误"多对一属性不应该是'Mapped Superclass'".

@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;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

并且Project类与同样的问题大致相同:

@MappedSuperclass
public abstract class Project implements Persistable {

    ...

    @OneToMany
    public List<Participant> getParticipants() {
        return participants;
    }

    public void setProject(List<Participant> participants) {
        this.participants = participants;
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 6

映射的超类不是实体,它不能是关联的一部分.因此,将您的类映射为实体,并在其上方引入映射的超类或使用TABLE_PER_CLASS策略.

也可以看看

  • 3个ExtendedParticipant类共享许多字段名称,所以我希望将所有这些都放入基类中,这就是我选择Mapped SuperClass的原因.我想我可以有一个没有映射的基类,但是我必须在每个ExtendedParticipant中包含每个字段...... (2认同)