我有一个无法解决的问题。假设我有一个具有定义的实体;
@Table(name = "person")
@Entity(name = "Person")
@Inheritance(strategy = InheritanceType.JOINED)
public class Person {
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
protected String id;
@Column
private String name;
@Column
private String surname;
//getters setters contsructer
}
我还有另外一堂课,可以让别人说
@Table(name = "special_person")
@Entity(name = "SpecialPerson")
public class SpecialPerson extends Person {
@Column
private String specialValue;
//getters setters contsructer
}
现在我创建一个人并保存它
Person person = new Person("John", "Doe");
String recordedId = entityManager.merge(person).getId();
保存后,我创建一个具有记录的ID的特殊人并保存,
Person sPerson = new SpecialPerson(recordedId, "John", "Doe", "Special One");
entityManager.merge(sPerson);
我希望,hibenate标识它有一个父级,并且仅在带有recodedId的special_person表中创建一条记录,但是对此有意义,hibernate为sPerson提供另一个ID,并为person和special_person表创建新记录。这是什么原因,如何处理这种情况。
更新 这是重复项。我刚刚找到了任何不便敬请谅解。要获取答案,请访问:jpa how to create new entity with same id as parent entity (JOINED Inheritance)