我有2个实体使用与主键相同的序列,该如何映射? 示例:
@Entity
@Table("employeT")
public class Employe(){
@SequenceGenerator(name = "generator_id", sequenceName = "seq_id")
@GeneratedValue(generator = "generator_id")
@colunm(name = "id")
private Integer id;
@colunm(name = "nameEmp")
private String name;
@JoinColumn(name = "id")
private Computer computer;
}
@Entity
@Table("computerT")
public class Computer(){
@SequenceGenerator(name = "generator_id", sequenceName = "seq_id")
@GeneratedValue(generator = "generator_id")
@colunm(name = "id")
private Integer id;
@colunm(name="name_computer")
private String nameComputer;
}
我需要由Employe save生成的具有相同ID的保存员工和计算机。
答案 0 :(得分:1)
要使代码按照您想要的方式工作,需要做三件事。
所以它看起来像这样:
@Entity
@Table("employeT")
public class Employe(){
@Id
private Integer id;
@Colunm(name = "nameEmp")
private String name;
@OneToOne
@JoinColumn(name = "computer_id")
@MapsId
private Computer computer;
}
为什么?
@OneToOne注释指示实体之间的关系。
@SequenceGenerator是多余的,因为我们从计算机实体“复制”了ID。
@Id注释是必需的,以指示此字段是我们的主键。
最后但并非最不重要的一点是,@ MapsId注释起到了神奇作用,它从关系中“借用”了ID。
我之前附加的链接中的更多信息。