【发布时间】:2020-12-17 09:36:17
【问题描述】:
我开发了一个 REST 投票系统,用户可以在其中对餐厅进行投票。我有一个包含用户、餐厅和日期的投票类。
public class Vote extends AbstractBaseEntity {
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
@NotNull
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "restaurant_id")
private Restaurant restaurant;
@Column(name = "date", nullable = false)
@NotNull
private LocalDate date;
}
我需要找到当天的所有选票。如果一个餐厅有几票,那么只有第一个对象可以很好地序列化。其他的显示餐厅 ID 而不是餐厅对象,如下所示:
[
{
"id": 100019,
"user": null,
"restaurant": {
"id": 100004,
"name": "KFC"
},
"date": "2020-08-28"
},
{
"id": 100020,
"user": null,
"restaurant": 100004,
"date": "2020-08-28"
},
{
"id": 100021,
"user": null,
"restaurant": {
"id": 100005,
"name": "Burger King"
},
"date": "2020-08-28"
},
{
"id": 100022,
"user": null,
"restaurant": 100005,
"date": "2020-08-28"
}
]
因此,KFC 的第一个投票显示完整的餐厅信息,但第二个仅显示 ID。汉堡王同样是下一个 2 票。
可能是什么问题?
【问题讨论】:
-
你能告诉我们你是如何检索一天的选票的吗?问题可能是您将结果作为 Vote.class 列表获得,其中投票仅指一家餐厅而不是列表。
-
我怀疑 "restaurant": 100004 是表投票中的外键。 "restaurant": {...} 是另一个表中引用的 Restaurant 对象。也许 getter 从 JSON 序列化程序中调用,有时返回键而不是对象。为了测试这个理论,您可以将数据复制到中间(非 JPA)pojo 并将该对象返回给 REST 层。
标签: java spring hibernate jackson