gpt4 book ai didi

java - JPA:单向OneToMany问题

转载 作者:行者123 更新时间:2023-12-01 15:53:55 25 4
gpt4 key购买 nike

我有以下类(class):

class A{
@OneToOne(cascade=CascadeType.ALL)
private B b;
}

class C{
@ManyToOne
private A a;
}

class B{
@OneToOne
private A a;

@MapKey(name = "name")
@OneToMany(cascade = CascadeType.ALL, ...)
@JoinColumn(...)
private Map<String C> cs;
}

如何指定 B.cs 上的映射才能加入 B.a == C.a?

这可能吗?或者我是否必须将属性 C.a 更改为 C.b? (我更愿意保持原样,因为实体 B 只是一个辅助类。)我还尝试将 B 更改为 @Embeddable,但嵌入不支持 Map。

最佳答案

JPA 要求所有关系均按 Id 进行(外键引用主键)。因此,您需要从 C 添加 @ManyToOne 到 B。或者,确保 B 的 Id 是 A 的外键(在 B 到 A 的 @OneToOne 上添加 @Id,并删除 A 的其他 @Id)。如果 B 是 A 的子类而不是 OneToOne,这也可以工作。

如果您使用 EclipseLink,则可以为关系定义更复杂的条件。您需要使用 DescriptorCustomizer 和 OneToManyMapping API 定义 OneToMany 的外键。

关于java - JPA:单向OneToMany问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451087/

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