我知道similarquestions,但他們被問及在Hibernate的範圍內回答。我遇到了同樣的問題,但我正在使用Eclipselink,並想知道是否有更好的或替代的解決方案來解決Hibernate的問題。使用Eclipselink/JPA更改實體類型?
回顧一下前不久的問題:
我上課,從相互繼承:
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="dtype")
@DiscriminatorValue(value="parent")
public class Parent {
@Id
private long id;
}
@Entity
@DiscriminatorValue(value="child")
public class Child extends Parent{
private String childProperty;
}
現在我想改變一個孩子到家長或反之亦然,如
Parent p = new Parent();
em.persist(p);
Child c = (Child) p;
em.merge(c);
我認爲p的數據庫行現在是dtype = child
。
另一種方法是這樣的:
Child c = new Child();
em.persist(c);
Parent c = (Parent) c;
em.merge(c);
在這種情況下,我希望c
被保存dtype = parent
和失去childProperty
值。
但是,上面所述的內容並不起作用,但我寫下來表明我的意思。
有沒有辦法用Eclipselink做到這一點?
請根據面向對象描述或給出示例代碼,瞭解「更改類型」? –
我擴展了說明 – Bob
看來是不自然的設計,在第一步之後,下一個也是錯誤的。我不太會說流利的英文來描述如何(以我的理解)解決問題 –