簡體   English   中英

如何根據rest請求使用@JsonIgnore

[英]how to Use @JsonIgnore according to the rest request

注意:不包括不同的概念,以便專注於問題。 在 API 請求中使用 Entity 通常是不正確的。 在此示例中,實體用於 API 體系結構以僅關注問題。

我正在用 JPA 做一些例子。

在建立關系時,我不得不使用@JsonIgnore 當我沒有使用JsonIgnore時,它進入了死循環並給出了序列化錯誤。 然后我通過在相關字段中添加@JsonIgnore注釋解決了我的問題。

但是,例如,當我想使用分支號 1 和分支號 1 帶來所有用戶時,我無法返回列表,因為它用@JsonIgnore標記了它。 我可以根據 rest 請求過濾@JsonIgnore標記嗎?

如果出現 POST 請求, @JsonIgnore應該可以工作,但如果出現 GET 請求, @JsonIgnore應該處於非活動狀態。

@Entity
@Getter
@Setter
public class Account {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private double balance;

    @ManyToOne
    @JoinColumn(name = "branchCode")
    private Branch branch;
}
@Entity
@Getter
@Setter
public class Branch {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String address;
    @Column(unique = true)
    private Integer branchCode;
    @OneToMany(mappedBy = "branch")
    @JsonIgnore
    private List<Account> accounts;
}

添加分支(發布方法)


添加分支


獲取帳戶(POST 方法)

新增帳戶


獲取帳戶信息(獲取方法)

獲取帳戶


獲取分支(獲取方法)

得到分支


可以在運行時添加和刪除注釋。 查看有關該主題的這篇文章 這里的想法是您將在 POST 調用期間設置注釋,並在 GET 調用期間刪除注釋。

這是否適用於 Jackson 或您的用例,我不知道,但您的問題具體涉及“有條件地使用 @JsonIgnore object”。 您可以通過實驗確定這種方法是否有效,並希望報告您的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM