2017-04-27 176 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