JPA:从一对一关系中获取数据

时间:2013-05-31 10:25:00

标签: java jpa

我在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;
}

1 个答案:

答案 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