问题的背景是用于 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 中插入条目),而是尝试插入新的(附加)对象。
我正在尝试了解如何正确配置Orika类映射,以防我继承类.
我已经建立了一个简单的例子,以便能够理解什么在起作用,哪些起作用,但我不明白.
public class Source {
private final String alpha;
public Source(final String alpha) {
this.alpha = alpha;
}
public String getAlpha() {
return alpha;
}
}
public final class SourceExtended extends Source {
private final String beta;
public SourceExtended(final String alpha, final String beta) {
super(alpha);
this.beta = beta;
}
public String getBeta() {
return beta;
}
}
public final class Target {
private final String alpha;
private final String beta;
public Target (final String alpha) {
this(alpha, null); …Run Code Online (Sandbox Code Playgroud)