小编jos*_*ose的帖子

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

问题的背景是用于 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 中插入条目),而是尝试插入新的(附加)对象。

java hibernate jpa

5
推荐指数
0
解决办法
1061
查看次数

如何为类层次结构配置Orika classMap?

我正在尝试了解如何正确配置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)

java mapping orika

5
推荐指数
1
解决办法
5315
查看次数

标签 统计

java ×2

hibernate ×1

jpa ×1

mapping ×1

orika ×1