gpt4 book ai didi

java - 如何构建 Java Spring/Hibernate 后端以实现双向关系

转载 作者:行者123 更新时间:2023-12-02 03:36:58 26 4
gpt4 key购买 nike

我正在构建一个 Twitter 克隆,它与用户和推文(一个用户、多条推文等)具有一对多/多对一关系。

我使用的是双向关系,并使用@JsonManagedReference和@JsonBackReference来处理无限递归,但是,由于无限递归已经解决,现在我无法从每条推文中获取用户信息。

域对象:

用户对象

@OneToMany(mappedBy = "user", fetch = FetchType.LAZY)
@JsonBackReference
private Set<Tweet> tweets = new HashSet<>();

推文对象

@ManyToOne
@JoinColumn(name = "user_id")
@JsonManagedReference
private User user;

API 响应

获取用户(这个看起来不错)

[
{
"id": 1,
"name": "Alex",
"tweets": [
{
"id": 6,
"tweet": "cook one meal, doesn't make u a chef"
},
{
"id": 8,
"tweet": "Red fox jumped over the barn"
}
]
}
]

获取推文(这个不好,我没有每条推文的用户信息,但是如果我添加它,那么又会出现无限递归)

[
{
"id": 6,
"tweet": "cook one meal, doesn't make u a chef"
},
{
"id": 8,
"tweet": "Red fox jumped over the barn"
}
]

最佳答案

您可以使用 JsonIgnoreProperties 告诉 Hibernate 在序列化时忽略该属性。

推文对象

@ManyToOne
@JoinColumn(name = "user_id")
@JsonIgnoreProperties("tweets")
private User user;

现在,当您序列化 Tweet 对象时,它将包含除推文之外的所有用户信息。

关于java - 如何构建 Java Spring/Hibernate 后端以实现双向关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56854221/

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