具有相同ID的合并时的Hibernate继承问题

时间:2019-12-10 14:42:17

标签: java hibernate jpa inheritance

我有一个无法解决的问题。假设我有一个具有定义的实体;

@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)

0 个答案:

没有答案
相关问题