gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 13:36:43 26 4
gpt4 key购买 nike

这就是我的 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 会为您做所有事情。

  • 您无需使用 @Column 来注释已经具有 @OneToOne 或其他关联注释的列
  • 如果您想使用默认外键(默认名称由 field + _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;
}

关于mysql - 如何将一个实体编码为另一个实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com