相关疑难解决方法(0)

更改保留其ID的实体类型

我使用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)

有可能吗?

java persistence hibernate

9
推荐指数
1
解决办法
2797
查看次数

标签 统计

hibernate ×1

java ×1

persistence ×1