JPA 继承类型 JOINED 更新(更改子类型)

jos*_*ose 5 java hibernate jpa

问题的背景是用于 CRUD 操作的产品管理系统。所有产品的通用产品属性都是相同的,每个具体产品类型都有一些附加字段。当用户选择产品类型时,会动态加载附加字段。

我正在使用 JPA 并使用 InheritanceType.JOINED 进行以下继承:

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class AbstractProduct { ... }

@Entity
@PrimaryKeyJoinColumn(name = "ID", referencedColumnName = "ID")
public class ProductA extends AbstractProduct { ... }

@Entity
@PrimaryKeyJoinColumn(name = "ID", referencedColumnName = "ID")
public class ProductB extends AbstractProduct { ... }
Run Code Online (Sandbox Code Playgroud)

接下来,我使用 JpaRepositories 进行 CRUD 操作。

它适用于 CRUD 操作,除非用户想要更改产品的类型。如果我已阅读 ProductA 类型的对象,是否有可能使用 JPA 更新功能将产品类型更改为 ProductB?

编辑:当使用存储库保存更新时,旧条目不会更新(例如,从 ProductA 中删除条目、更新 AbstractProduct 中的条目、在 ProductB 中插入条目),而是尝试插入新的(附加)对象。