【发布时间】:2020-10-22 14:06:04
【问题描述】:
最近我一直在尝试通过多对多关系链接模块表和活动表。 此关系欢迎以下附加字段。
-------------------------------------------------------------
| Module | ModuleHasActivities | Activities |
-------------------------------------------------------------
| id | Module_idModule | id |
| Name | Activity_idActivity | Name |
| Observations | Day | Price |
-------------------------------------------------------------
我使用 JsonManagedReference 和 JsonBackReference 来避免无限循环。不幸的是,结果不是预期的,因为我没有从活动中获得模块列表,反之亦然。返回的唯一信息是实体字段。
@Entity
@Table(name = "Module")
public class Module implements Serializable {
@Id
@GeneratedValue
@Column(name = "idModule")
private int id;
// Other fields plus getter and setter
@OneToMany(mappedBy = "module", cascade = CascadeType.ALL)
@JsonBackReference
private Set<ModuleHasActivities> moduleHasActivities = new HashSet<>();
}
@Entity
@Table(name = "Activite")
public class Activite implements Serializable {
@Id
@GeneratedValue
@Column(name = "idActivite")
private int id;
// Other fields
@OneToMany(mappedBy = "activite", cascade = CascadeType.ALL)
@JsonBackReference
private Set<ModuleHasActivities> moduleHasActivities = new HashSet<>();
}
@Entity
@Table(name = "Module_has_Activite")
public class ModuleHasActivities implements Serializable {
@Id
@ManyToOne
@JoinColumn(name = "Module_idModule")
@JsonManagedReference
private Module module;
@Id
@ManyToOne
@JoinColumn(name = "Activite_idActivite")
@JsonManagedReference
private Activite activite;
@Column(name = "IdJour")
private int jour;
}
查询模块响应:
[
{
"id": 1,
"code": "TT1",
"title": "Test 1",
"description": "Nothing",
"observations": "Nothing",
}
]
我的期望(类似这样):
[
{
"id": 1,
"code": "TT1",
"title": "Test 1",
"description": "Nothing",
"observations": "Nothing",
"activities": [
"day1":
{
//fields of activities
},
"day2":
{
//fields of activities
},
]
}
]
当我调试 hibernate 的 SQL 查询时,我们看到连接从未完成。这就是我感兴趣的!模块表的接头丢失。
不胜感激,
谢谢
已经访问过的链接: Extra fields for many to many relations
【问题讨论】:
标签: java spring-boot hibernate jackson