【发布时间】:2023-03-24 02:16:01
【问题描述】:
背景背景
在讨论这个问题之前,我首先要指出的是,我只需要使用 JPA 来读取我的架构 - 此应用程序不会影响/更改数据库中的任何数据。
多对多加入问题
我的架构中有一个名为ParamInParamClass 的多对多连接表,其中包含其他非键数据。但在 JPA 中,我们通常使用 join-table 多对多语法将 ParamClass 表连接到 Param 以获取 Param 中 ParamClass 中的对象列表。
所以,如果我使用这种连接语法:
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name="ParamInParamClass",
joinColumns = {
@JoinColumn(name = "FKParamClassID", referencedColumnName = "ID")},
inverseJoinColumns = {
@JoinColumn(name="FKParamID", referencedColumnName="ID")})
private List<Parameter> params;
在ParamClass 中,那么我无法访问ParamInParamClass 中的DefaultOverride | MinimumOverride | MaximumOverride。
我该如何解决这种情况?
【问题讨论】:
-
谢谢,这看起来很有用。在hibernate之上使用JPA可以实现同样的事情吗? (我现在正在研究它,只是并行询问)。
-
请参阅 EclipseLink 完成的本手册,建议使用 JPA 方法来解决此问题:en.wikibooks.org/wiki/Java_Persistence/…
-
基本上他们所做的是将多对多关系表示为两个多对一(一对多)关系,并将子父关系的设置委托给第三个实体类(表),可以有任意多的额外列。
-
知道了,谢谢大家的帮助:)