我有2个实体和一个嵌入式对象。为了使讨论保持通用,我将其称为Project,ProjectAssociation(嵌入式对象),employee。

使用项目关联将员工与Project关联。

我的业务需求是,我应该能够从员工那里查找projectAssociation。此外,将来我们可以期望projectAssociation获得更多属性。 projectAssociation的生命周期将始终与项目相关。

通过projectAssociation嵌入式对象,Project和雇员实体之间具有多对多关系。

如何从项目到项目关联配置映射。

Employee {
    Project projects;

    @OneToMany(mappedBy="What to set here?")
    public Set<Project> getProjects() {
        return projects;
    }

    public void setProjects(Set<Project> projects) {
        this.projects= projects;
    }
}

Project {
    Set<ProjectAssociation> projectAssocs;

    @Embedded
    @ElementCollection
    public Set<ProjectAssociation> getProjectAssociation() {
        return projectAssocs;
    }

    public void setProjectAssociation(Set<ProjectAssociation> hostRecovery) {
        this.projectAssocs = projectAssocs;
    }
}

ProjectAssociation {
// Parent association variable and methods are omitted for brevity
    Employee  employee;

    @ManyToOne
    public Employee getEmployee() {
        return employee;
    }

    public void setEmployee(Employee employee) {
        this.employee = employee;
    }
}

最佳答案

您需要使用中间表和外键列将其映射为@ManyToMany,然后设置Inverse(),以便Employee不维护任何链接表条目

@ManyToMany(...)
@Inverse()
public Set<Project> getProjects() {
    return projects;
}

关于java - hibernate :当在嵌入式集合的对象中维护“多对一”关系的“多对一”关系时,如何设置按属性映射,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10830442/

10-09 04:46