2

2 つのエンティティと埋め込みオブジェクトがあります。議論を一般的なものにするために、プロジェクト、ProjectAssociation (組み込みオブジェクト)、従業員と呼ぶことにします。

従業員は、プロジェクト関連付けを使用して Project に関連付けられます。

私のビジネス要件は、employee から projectAssociation を検索できるようにすることです。さらに、将来的には projectAssociation がより多くの属性を取得することが期待できます。projectAssociation のライフサイクルは、常にプロジェクトに関連付けられます。

プロジェクト エンティティと従業員エンティティは、projectAssociation 埋め込みオブジェクトを介して多対多の関係を持ちます。

プロジェクトからプロジェクトへの関連付けを構成してマッピングするにはどうすればよいですか?

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

1 に答える 1

0

中間テーブルと外部キー列を使用して @ManyToMany としてマップし、Inverse() を設定して、従業員がリンクテーブル エントリを保持しないようにする必要があります。

@ManyToMany(...)
@Inverse()
public Set<Project> getProjects() {
    return projects;
}
于 2012-05-31T11:27:16.250 に答える