JPA多表關聯查詢

霖你唔到發表於2018-05-15

JPA多表關聯查詢

作用:就是實現使用一個實體類物件操作或者查詢多個表的資料

回顧:配置多表聯絡查詢必須有兩個步驟
1. 在實體類裡面建立表與表之間的關係。
2. 配置關聯關係,JPA使用註解配置

一對多配置

需求:指定OID查詢客戶的資訊(公司資訊),同時也查詢關聯的聯絡人資訊

配置步驟

/*
 * 通過客戶找聯絡人,所以再Customer實體類配置
 * 客戶表和實體類是一對多的關係,意味著一個實體類物件可以儲存多個聯絡人
 * 所以使用集合接受聯絡人資料
 * 
 * 基於JPA標準要求,List已經不需要再外來鍵維護一個排序欄位
 * 所以基於JPA的配置,建議使用List集合
 */
 //宣告關係,一對多
@OneToMany
//一對多必須要指定外來鍵的欄位名 (一定要配置外來鍵關聯)
@JoinColumn(name="lkm_cust_id")
private List<Linkman> linkmans;

public List<Linkman> getLinkmans() {
    return linkmans;
}

注意:
1. 配置關聯的兩個實體類,必須有一個外來鍵欄位建立和資料庫的關聯的
2. @JoinColumn用於設定,關聯的外來鍵約束的欄位(外來鍵配置)
3. 使用JPA註解配置的集合建議使用List

  • 測試程式碼
//需求:指定OID查詢客戶的資訊(公司資訊),同時也查詢關聯的聯絡人資訊
@Test
public void find(){
    //1.獲得操作物件,實體管理類物件
    EntityManager manager = JPAUtils.getEntityManager();
    Customer customer = manager.find(Customer.class, 1L);

    System.out.println("客戶名:"+customer.getCustName());
    List<Linkman> linkmans = customer.getLinkmans();
    for(Linkman l:linkmans){
        System.out.println("聯絡人:"+l.getLkmName());
    }
    manager.close();
}

相關文章