我假设有两个表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;
}
答案 0 :(得分: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;
}
这应该服务于你的目的。