繁体   English   中英

Hibernate插入表ID作为另一个表中的外键

[英]Hibernate Insert table id as foreign key in another table

我有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_no属性维护Card信息,在“ Card实体中,也要拥有person_id属性。 因此,您正在寻找的是双向关系。 假设您正在寻找One-To-Many双向关系,那么“ Person和“ Card实体之间的映射将如下所示。

一个Person可以有很多Cards因此您需要在人类中设置一个。 映射是一对多所以使用@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类中,与Person类的关系是ManyToOne ,因此请使用注释@ManyToOne ,在这里您可以指定Card表中指向Person表的主键的外键名称。 在这里我们可以给外键起任何名字,如果你想给它起"parent_id @JoinColumn(name = "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;
}

阅读文档: http : //docs.jboss.org/hibernate/orm/4.3/manual/zh-CN/html/ch05.html#d5e3678

更改行:

private int person_id;

对于:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM