【问题标题】:Retrieving Field from Parent Table with JPA ManytoOne使用 JPA ManytoOne 从父表中检索字段
【发布时间】:2015-09-01 15:21:55
【问题描述】:

我假设有两个表 t_document 和 t_employee。表 t_document 有两个字段,id 和 owner_id,其中 owner_id 与 t_employee 具有外键关系。表 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;

对于初学者,我已经包含了我的 Document 类的基本开端。

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

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

}

【问题讨论】:

    标签: java hibernate jpa many-to-one


    【解决方案1】:

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

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

    这应该符合您的目的。

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 1970-01-01
      • 2019-03-16
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多