Mysql 如何将一个实体编码为另一个实体?

Mysql 如何将一个实体编码为另一个实体?,mysql,hibernate,entity,Mysql,Hibernate,Entity,这就是我的SQL表的外观: CREATE TABLE IF NOT EXISTS `test`.`Families` ( `id` INT NOT NULL AUTO_INCREMENT, `mother_id` INT DEFAULT NULL , `father_id` INT DEFAULT NULL , PRIMARY KEY (`id`) ) ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS `test`.`Parents` (

这就是我的SQL表的外观:

CREATE  TABLE IF NOT EXISTS `test`.`Families` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `mother_id` INT DEFAULT NULL ,
  `father_id` INT DEFAULT NULL ,
  PRIMARY KEY (`id`) 
) ENGINE=InnoDB;

CREATE  TABLE IF NOT EXISTS `test`.`Parents` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `first_name` VARCHAR(50) DEFAULT NULL,
  `last_name` VARCHAR(50) DEFAULT NULL,
  PRIMARY KEY (`id`) 
) ENGINE=InnoDB;
这就是我的家庭实体的样子:

@Entity
@Table(name="Families")
public class Family implements Serializable {
    @Id
    @Column(name="id") 
    private String id;

    @Column(name="mother_id")
    private int mother;

    @Column(name="father_id")
    private int father;
}
这很好,但我真的很希望我能做像这样的事情,我还有一个已经定义的父实体:

@Entity
@Table(name="Families")
public class Family implements Serializable {
    @Id
    @Column(name="id") 
    private String id;

    @OneToOne
    @Column(name="mother_id")
    private Parent mother;

    @OneToOne
    @Column(name="father_id")
    private Parent father;
}

我怎样才能做到这一点呢?

事实上,Hibernate为你做了一切

对于已经有@OneToOne或其他关联注释的列,不需要使用@Column对其进行注释 如果要使用除默认外键以外的其他外键,则默认名称由字段+\u id组成,应使用@JoinColumn注释
@Entity
@Table(name="Families")
public class Family implements Serializable {
    @Id
    @Column(name="id") 
    private String id;

    @OneToOne
    @JoinColumn(name = "mother_idd") 
    private Parent mother;

    @OneToOne
    @JoinColumn(name = "father_idd")
    private Parent father;
}