我有2张桌子PERSON和CARD
我希望我的表CARD具有PERSON_ID作为FK,我应该如何在休眠实体类中进行操作。
有没有一种方法可以通过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;
}
}
我的卡实体类
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。
最佳答案
在Person
中,您想使用Card
属性来维护card_no
信息;在Card
实体中,您想要具有person_id
属性。因此,您正在寻找的是双向关系。假设您要查找One-To-Many
双向关系,则Person
和Card
实体之间的映射如下。
一个Person
可以有多个Cards
,因此您需要在Person类中设置一个。映射是OneToMany,因此请使用@OneToMany
和mappedBy
属性告诉Card
类中的哪个属性表示Person
实体。我在person
类中使用了属性名称Card
,因此mappedBy
包含值为person
。
@Entity(name="PERSON")
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@OneToMany(mappedBy = "person")
private Set<Card> cards;
}
现在在
Card
类中,对ManyToOne
类的关系是Person
,因此使用注释@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;
}
关于java - Hibernate插入表ID作为另一个表中的外键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26031199/