如何在春季启动jpa中使用外部ID作为主要ID?

有没有办法使用另一个实体的主键作为主键而不使用Embeddable或Id类。例如:如何在春季启动jpa中使用外部ID作为主要ID?

@Table(name = "employee") 

@Entity

public class Employee implements Serializable {

@Id

@JoinColumn(name = "person_id")

private Person person;

这里,Person是另一个实体,and person_id是主键。 在此先感谢

回答:

是的,如果这是唯一放慢参数构建的PK,你可以做这样的

public class Employee implements Serializable { 

@Id

@Column(name="person_id")

private Long personId;

@JoinColumn(name = "person_id")

private Person person;

但是,如果是这样的话是没有用做的,如果员工有相同的主键然后他们应该在同一个表中,不需要将它们分开在两个表中。

在我们所处理的含有人那么我们需要创建一个embedable键复合主键的情况下:

@Embeddable 

public class CompositeKey{

@Column(name="person_id")

private Long personId;

... // other attributes

}

public class Employee implements Serializable {

@EmbeddedId CompositeKey employeeId;

@JoinColumn(name = "person_id")

private Person person;

另需注意,这里是你的关系的注释,你应该让你的人OneToOne注解参考:

@OneToOne 

@JoinColumn(name = "person_id")

private Person person;

回答:

对我来说似乎Employee可以延长Person?如果是这种情况,那么继承就会以“自然”的方式进行。

@Entity 

@Inheritance(strategy=InheritanceType.JOINED)

public class Person implements Serializable {

@Id

@GeneratedValue

@Getter

private Long id;

}

@Entity

public class Employee extends Person implements Serializable {

}

以上是 如何在春季启动jpa中使用外部ID作为主要ID? 的全部内容, 来源链接: utcz.com/qa/262104.html

回到顶部