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

あなたはアドレスクラスでのAddressTypeのために同じ代わりにEMP_IDの従業員を、持っているでしょう。しかし、これは従業員と住所のように、これは外部キーが結合テーブルのpkになることが必要だと思います – XtremeBaumer

+0

どのIDEを使用しますか?ほとんどのIDEは、データベーステーブルからEntityクラスを生成するための機能を提供します。テーブル関係はデータベースレベルで定義する必要があり、望ましい結果や出力を確認するには正確でなければなりません。 – user75ponic

+1

あなたのテーブルは理にかなっていません。私はまずそれを修正するだろう。 –

答えて

0

おかげで、あなたはより良いIDを生成するためにAbstractPersistableを使用したい:

ので、アドレスとAddressTypeにも

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; 
    } 
をPRIMARY_KEYを持っています

2アドレス

POJOで3210
@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

彼はSpring Dataの使用について何を言っていますか? –

+0

はい、彼はしませんでした、それはちょうど提案です –

+0

@Azzabiありがとう..しかし、私は従業員のテーブルのemp_idを見ていない.. – vinod