我在JPA中有两个表(模型)如下:
Table Employee| | Table Person |
--------------| ----------------
id | | id |
mobile_number | | employee_id |
| address |
我有手机号码,我需要知道地址?如何使用JPA完成?
由于我使用的是JPA,我是否还需要编写一个将连接这两个表然后返回结果的查询? (就像在单个表上执行操作时,JPA为您提供getByid()或getBymobileNumber等函数)
实体bean:
@Entity
@Table(name = "employee")
public class Employee {
@CreatedDate
@Temporal(TemporalType.DATE)
private Date created;
@LastModifiedDate
@Temporal(TemporalType.DATE)
private Date lastModified;
private String mobileNumber;
}
@Entity
@Table(name = "Person")
public class Person {
@CreatedDate
@Temporal(TemporalType.DATE)
private Date created;
@LastModifiedDate
@Temporal(TemporalType.DATE)
private Date lastModified;
@OneToOne
private Employee employee;
}
答案 0 :(得分:0)
您可以使用EntityManager.find()
按ID查找实体。在使用ID以外的其他内容查找实体时,您必须创建查询。
要让引用具有给定移动电话号码的员工的人(假设只有一个存在),查询将是
select p from Person p where p.employee.mobileNumber = :theMobileNumber
要直接获取地址,查询将为
select p.address from Person p where p.employee.mobileNumber = :theMobileNumber