Mysql 如何将一个实体编码为另一个实体?
这就是我的SQL表的外观: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` (
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;
}