2017-04-27 175 views
1

嗨下面是我的表和它的desc。複合鍵的Jpa映射

Employee: 
emp_Id primary_key 
emp_Name 
emp_Address 

Address: 
emp_id -- foreign key of employee table 
addres_type 
type_id 

AddressType: 
Type_id -- foreign key of Address table 
Type 
Desc 

我該如何創建這種關係的JPA實體。

在此先感謝

+1

你會在地址類僱員,而不是EMP_ID,同爲地址類型。但我認爲這需要外鍵成爲加入表的PK,就像員工和地址 – XtremeBaumer

+0

您使用哪種IDE?大多數IDE提供了從數據庫表中生成實體類的功能,您的表關係應該在數據庫級別定義,並且它應該是準確的,以便查看所需的結果或輸出。 – user75ponic

+1

你的表沒有任何意義。我會先解決。 –

回答

0

你最好使用AbstractPersistable生成ID:

所以地址和地址類型將有一個primary_key也

1 - 員工

@Entity 
    @Table(name = "Employee ") 
    public class Employee extends AbstractPersistable<Long>{ 

// Employee here have a generated id from AbstractPersistable 

     private static final long serialVersionUID = 1L; 

     @Column(name = "emp_Name ") 
     private String emp_Name ; 


     @ManyToOne(optional = true) 
     @JoinColumn(name = "emp_Address") 
     private Address emp_Address; 
    } 

2-地址

@Entity 
    @Table(name = "Address") 
    public class Address extends AbstractPersistable<Long>{ 

    //Address here have a generated id from AbstractPersistable 

     private static final long serialVersionUID = 1L; 

//you can delete this column because you have already the ManyToOne in Employee 
     @ManyToOne(optional = true) 
     @JoinColumn(name = "emp_id") 
     private Employee emp_id; 
//***************** 

     @Column(name = "addres_type") 
     private String addres_type; 


     @ManyToOne(optional = true) 
     @JoinColumn(name = "Type_id") 
     private AddressType Type_id ; 
    } 

3地址類型

@Entity 
     @Table(name = "AddressType") 
     public class AddressType extends AbstractPersistable<Long>{ 

     //AddressType here have a generated id from AbstractPersistable 

      private static final long serialVersionUID = 1L; 



      @Column(name = "Type") 
      private String Type; 

      @Column(name = "Desc") 
      private String Desc; 
     } 
在POJO
+0

他在哪裏談論使用Spring Data? –

+0

是的,他沒有,這只是一個建議 –

+0

@Azzabi謝謝..但我沒有看到僱員表中的emp_id .. – vinod