问题的背景是用于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 { ... }
此外,我使用JpaRepositories进行CRUD操作。
它适用于CRUD操作,除非用户想要更改产品类型。如果我读过ProductA类型的对象,是否有可能使用JPA更新功能将产品类型更改为ProductB?
编辑:使用存储库保存更新时,旧条目不会更新(例如,从ProductA中删除条目,更新AbstractProduct中的条目,在ProductB中插入条目),而不是尝试插入一个新的(附加)对象。