0

我想知道如何使用 JPA 映射以下要求

我有一个具有以下属性的项目实体

projectNo (auto generated)
projectRequestedBy
approvedBy

员工实体

employeeNumber (primary key)
employeeName
employeeTitle
employeePhone

我想知道如何有效地映射employeeNumber项目实体中的 projectRequestedBy 和approvedBy 属性?

而且我还想知道当我对实体类执行查询时如何显示和employeeName属性?理想情况下,如果我尝试获取项目记录,我希望拥有以下记录employeeTitleemployeePhoneProject

projectNo projectRequestedByName projectRequestedByTitle  approvedByName approvedByTitle

任何帮助都是非常可观的。

更新 1

项目实体

@Entity
@Table(name = "PROJECT")
public class Project

private Long projectNo;

@ManyToOne
@JoinColumn(name="EMP_NUMBER", insertable =false, updatable=false)
private Employees employees;

员工实体

@Entity
@Table(name = "EMPLOYEES")
public class Employees {
@OneToMany  
@JoinColumn(name="EMP_NUMBER", nullable = false)
private Collection<Project> project;
4

1 回答 1

1

好的。首先,您的映射是错误的。在双向 OneToMany 关联中,一侧必须是反侧,这由mappedBy属性实现。正如文档中所示

您实际上在员工和项目之间有两个 OneToMany/ManyToOne。一名员工请求许多项目。一名员工批准了许多项目。

所以映射应该看起来像

@Entity
public class Employee
    @OneToMany(mappedBy = "requester")
    private Set<Project> requestedProjects;

    @OneToMany(mappedBy = "approver")
    private Set<Project> approvedProjects;
}

@Entity
public class Project
    @ManyToOne
    private Employee requester;

    @ManyToOne
    private Employee approver;
}

要在单个查询中获取项目及其请求者和批准者,

select p from Project p
left join fetch p.requester
left join fetch p.approver
于 2013-07-22T13:41:59.083 回答