gpt4 book ai didi

java - JPA 关系和多态性

转载 作者:行者123 更新时间:2023-11-30 09:52:35 24 4
gpt4 key购买 nike

我有以下类结构(为清楚起见省略了细节):

例如:

@Entity
class A{

@OneToMany
private List<B> b;

@OneToOne
private C c;


}

interface B {

}

@Entity
@Inheritance
abstract class Babstract implements B {

}

@Entity
@PrimaryKeyJoinColumn
class B1impl extends Babstract {

}

@Entity
@PrimaryKeyJoinColumn
class B2Impl extends Babstract {

}

我想加载属于 C 的所有 B。A 类将 B 与 C 相关联。B 和 C 不知道彼此的存在,我喜欢保持这种状态。我不知道 B 的实际实现类型,我也不在乎,因为我使用抽象数据类型 B(接口(interface))。实现可能会随着时间的推移而变化,例如,B 的新实现可能会在未来的新版本中添加。

JPA 可以做到这一点吗?我该怎么做?如果我是正确的,我不能使用 targetEntity 属性,因为我不知道实现类而且我不在乎。 B是多态。

最佳答案

JPA 不能很好地与接口(interface)一起工作。您需要使 B 至少成为带有实体注释的抽象类。您可以使 B 成为一个完全空的抽象类(除了 id 字段,您需要它)然后添加继承。这样做的原因是,为了让一个实体引用另一个实体,必须有一种方法可以在数据库中引用该实体——如果没有 B 的表,那么就没有办法做到这一点。

关于java - JPA 关系和多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com