[英]Spring Boot - Rest Controller is returning empty object when using Lombok
[英]Spring Boot Rest API Returns Empty JSON Used with Lombok
我有 Spring 啟動應用程序與 Web、JPA、H2、ZC6E190B2846433C48EZ39E5C6Z 依賴項。 我有以下實體
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Getter
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private Integer pageCount;
@ManyToOne
@JoinColumn(name = "author_id")
private Author author;
}
@NoArgsConstructor
@AllArgsConstructor
@Data
@Entity
@Getter
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String firstName;
@Column
private String lastName;
}
我正在關注 /books REST 端點的 JSON
[
{},
{}
]
如果我將 getter 和 setter 添加到實體,它工作正常。 當我使用@Data注釋時,如何在不添加getter setter的情況下獲得實際值作為響應
首先,在 spring 中,直接從 controller 返回實體 object 以轉換為 ZDFCDA4D6466DEEC7FECDF25 不是一個好方法。 使用 DTO 方法,以便您始終擁有從 controller 端點返回的 DTO object。 這樣,您將可以更好地控制要從端點返回的數據的類型和結構。
閱讀此處了解使用 DTO 的優勢。
其次,驗證您的表是否遵循基本的spring jpa
命名約定或與實體 class 名稱相同,如果沒有,請添加@Table(name="")
注釋。 檢查數據是否填充到您的實體類中。
刪除@Data
注釋。
@Data
不應在 JPA 實體上使用,因為實體toString
、 equals
和hashCode
方法需要以非常特定的方式編寫。 有關詳細信息,請參見此處。
經過大量搜索並查看了我的問題的答案后,找到了解決方案。 如果我使用 cmd 中的java -jar運行我的 spring 啟動應用程序,它工作正常。 但不是 IDE 所以問題是 IDE 配置。
我正在使用 Eclipse IDE
右鍵單擊您的項目->屬性
然后從屬性 window
Java 編譯器->注解處理->啟用注解處理
應選中此選項,然后處理注釋。 我從 Tinku 對這個問題的回答中關注了https://www.baeldung.com/lombok-ide 。
需要在 maven 或 gradle 文件鏈接中添加 Lombok 插件如何使用 maven-compiler-plugin 配置 Lombok? . 如果您使用的是 IDE 則需要安裝 Lombok 插件鏈接https://www.baeldung.com/lombok-ide
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.