2017-04-27 1 views
1

Salut Ci-dessous mes tables et ses desc.Jpa cartographie de clé composite

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 

Comment puis-je créer des entités JPA avec cette relation.

Merci à l'avance

+1

dans POJO vous auriez en classe adresse un employé au lieu de emp_id, même pour addresstype. mais je pense que cela nécessite la clé étrangère pour être le pk de la table de jointure, tout comme pour l'employé et l'adresse – XtremeBaumer

+0

Quel IDE utilisez-vous? La plupart des EDI fournissent la fonctionnalité pour générer la classe Entity à partir des tables de base de données, votre relation de table doit être définie au niveau de la base de données et elle doit être précise afin de voir les résultats ou la sortie souhaités. – user75ponic

+1

Vos tableaux n'ont aucun sens. Je réparerais ça en premier. –

Répondre

0

vous feriez mieux d'utiliser AbstractPersistable pour générer l'ID:

si l'adresse et AddressType aura un primary_key aussi

1 employé

@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-adresse

@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-AddressType

@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; 
     } 
+0

Où dit-il quelque chose sur l'utilisation de Spring Data? –

+0

Oui, il n'a pas, c'est juste une proposition –

+0

@Azzabi merci .. mais je ne vois pas emp_id dans la table des employés .. – vinod