我知道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
看来是不自然的设计,在第一步之后,下一个也是错误的。我不太会说流利的英文来描述如何(以我的理解)解决问题 –