2014-09-25 96 views
1

外鍵我有2個表PERSON和CARD休眠插入表ID在另一個表

我希望我的表證有PERSON_ID爲FK我怎麼想做到這一點在休眠實體類。

enter image description here

有沒有辦法通過Java類和註解辦呢?

我一個人的實體類

package com.managementsystem.model; 

import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 

@Entity(name="PERSON") 
public class Person { 

    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private int id; 

    private String name; 
    private String card_no; 
    private String rank; 
    private String dte; 

    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getCard_no() { 
     return card_no; 
    } 
    public void setCard_no(String card_no) { 
     this.card_no = card_no; 
    } 
    public String getRank() { 
     return rank; 
    } 
    public void setRank(String rank) { 
     this.rank = rank; 
    } 
    public String getDte() { 
     return dte; 
    } 
    public void setDte(String dte) { 
     this.dte = dte; 
    } 

} 

MY CARD實體類

package com.managementsystem.model; 

import javax.persistence.Entity; 
import javax.persistence.Id; 


@Entity(name="CARD") 
public class Card { 

    @Id 
    private int id; 

    //What to do here, how to link this to person id. 
    private int person_id; 
    private int serial_no; 

    public int getId() { 
     return id; 
    } 
    public void setId(int id) { 
     this.id = id; 
    } 
    public int getPerson_id() { 
     return person_id; 
    } 
    public void setPerson_id(int person_id) { 
     this.person_id = person_id; 
    } 
    public int getSerial_no() { 
     return serial_no; 
    } 
    public void setSerial_no(int serial_no) { 
     this.serial_no = serial_no; 
    } 


} 

什麼卡類做,這樣我可以在需要卡表中輸入爲person_id。

+0

原因DOWNVOTING閉? – 2014-09-25 05:31:15

回答

2

Person要保持使用card_no財產,也是Card信息Card實體你想擁有person_id屬性。所以你在尋找的是雙向關係。假設您正在尋找雙向關係One-To-Many,那麼PersonCard實體之間的映射將如下所示。

A Person可以有很多Cards所以你需要一個Person類的集合。該映射是OneToMany,因此使用@OneToManymappedBy屬性可知道Card類中的哪個屬性表示Person實體。我使用Card類中的屬性名稱person,因此mappedBy的值爲person

@Entity(name="PERSON") 
public class Person { 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private int id; 

    @OneToMany(mappedBy = "person") 
    private Set<Card> cards; 
} 

現在Card類的關係是ManyToOnePerson類,所以使用註釋@ManyToOne,在這裏你可以指定哪些是Card表指向Person表的主鍵的外鍵的名稱。在這裏,我們可以給任何名稱外鍵,如果你想給它爲"parent_id然後添加註釋@JoinColumn(name = "parent_id")

@Entity(name="CARD") 
public class Card { 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private int id; 

    @ManyToOne 
    @JoinColumn(name = "parent_id") 
    private Person person; 
}