有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate映射的超类关系和重写

我有一个抽象的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;
    }

    ...
}

项目类与相同问题的项目类大致相同:

@MappedSuperclass
public abstract class Project implements Persistable {

    ...

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

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

    ...
}

共 (3) 个答案