gpt4 book ai didi

java - Spring Boot Rest 中自连接到 JSON

转载 作者:行者123 更新时间:2023-12-02 10:54:55 25 4
gpt4 key购买 nike

我有一个帐户对象,其中包含与受益人对象的一对多关系,并且此关系是双向的,因此我在受益人对象与帐户对象中具有多对一关系

public class Account {
@Id
@GeneratedValue
private Long id;
private String name;
private String number;
//Other fields
@OneToMany(mappedBy = "account", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference
private List<Beneficiary> beneficiaries = new ArrayList<>();
}


public class Beneficiary {
@Id
@GeneratedValue
private Long id;
//Other fields
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "account_id")
@OnDelete(action = OnDeleteAction.CASCADE)
private Account account;
}

在 JSON 响应中,我需要包含受益人列表的帐户信息,对于每个受益人,我只需要帐户名称和帐号。是否可以以某种方式序列化它,以便我以这种方式得到响应?或者我需要修改我的实体结构吗?帐户响应示例 -

{
"id": 123,
"name": "Name1",
"number": "111111",
"beneficiaries": [
{
"id": 1,
"account": {
"name": "Name2",
"number": "222222"
}
},
{
"id": 2,
"account": {
"name": "Name3",
"number": "333333"
}
}
]
}

最佳答案

您不应该序列化 JPA 对象。相反,您需要定义域对象。这些对象是要序列化并公开给业务的对象。这种抽象将 REST 或 SOAP 或任何接口(interface)与 JPA 层解耦。

我将为您的帐户类创建一个域类。称之为 AccountDTO 或类似的名称。从 JPA 存储库返回的任何对象都需要映射到此 DTO 对象并向上冒泡到服务层。那么您的 DTO 就是模拟您的业务需求的类。您可以在其中输入帐户和受益人姓名。

DTO 代表数据传输对象。这些是应该被序列化并在系统之间发送的。

关于java - Spring Boot Rest 中自连接到 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51848362/

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