使用 JPA ManytoOne 从父 Table 检索字段

Retrieving Field from Parent Table with JPA ManytoOne

我假设有两个 tables t_document 和 t_employee。 table t_document 有两个字段,id 和 owner_id,其中 owner_id 与 t_employee 有外键关系。 table t_employee 有两个字段,id 和 name。我的难题是,如何设置 JPA 实体(使用版本 1.x),以便以下 NamedNativeQuery 获取文档以及所有者的姓名并正确填充实体?

SELECT d.id, e.name
FROM t_document d
JOIN t_employee e ON d.owner_id = e.id;

对于初学者,我已经包含了我的文档的基本开头部分 class。

@Entity
@Table(name = "T_DOCUMENT")
public class Document
{
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID", nullable = false)
    private Integer id;

}

根据关系(我假设 OneToMany,因为一个员工可以拥有多个文档),您可以按如下方式设计 class:

@Entity
@Table(name="T_EMPLOYEE")
public class Employee {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="ID")
    private long id;

    @Column(name="NAME")
    private String name;

    @OneToMany(mappedBy="employee")
    Collection<EmployeeDocument> documents = new ArrayList<>();
}


@Entity
@Table(name="T_DOCUMENT")
public class EmployeeDocument {
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="ID")
    private long id;

    @ManyToOne
    @JoinColumn(name="OWNER_ID")
    private Employee employee;
}

这应该符合您的目的。