我使用hibernate作为持久层.有两个实体位于同一个表中,扩展了一个具有单表继承策略的超类.
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public abstract class A {
@Id
@GeneratedValue
protected Long id;
// some common fields for B and C
}
@Entity
public class B extends A {
// B-specific fields
}
@Entity
public class C extends A {
// C-specific fields
}
Run Code Online (Sandbox Code Playgroud)
我有一个ID为4的B实例.如何将此实例的类型更改为C保留其ID(4)?
B b = em.find(B.class, 4L);
C c = convertToC(b);
c.setId(b.getId());
em.remove(b);
em.persist(c);
Run Code Online (Sandbox Code Playgroud)
上面的代码失败了
org.hibernate.PersistentObjectException: detached entity passed to persist: C
Run Code Online (Sandbox Code Playgroud)
有可能吗?