2013-05-31 60 views
0

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

我們可以看到Employee和Person的實體bean嗎? – Pablo

+0

更新了這個問題! – samach

回答

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