2014-09-25 93 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; 
}