1
我有一個默認的方法的接口:傑克遜@JsonIgnore繼承的Java 8默認方法
public interface Book {
String getTitle();
default String getSentenceForTitle() {
return "This book's title is " + getTitle();
}
}
...我有一個JPA @Entity
實現了這個接口:
@Entity
public class JpaBook implements Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
// ...
@Override
public String getTitle() {
return title;
}
}
使用此實體,我注意到傑克遜也將序列化默認方法getSentenceForTitle()
- 雖然在我的特殊情況下,我不想sentenceForTitle
被序列化。
有沒有讓傑克遜知道我不想有一個默認方法序列化,但保持該方法的行爲?目前的解決方法,我想出了壓倒一切的默認方法,用@JsonIgnore
註釋它,並委託給默認的方法:
@Entity
public class JpaBook implements Book {
// ...
@Override
@JsonIgnore
public String getSentenceForTitle() {
return Book.super.getSentenceForTitle();
}
}
但是這種解決方案可以得到相當繁瑣,容易出錯的接口有許多默認的方法。
真棒,我選擇去*'@ JsonIgnoreProperties(..)'在JPA實體類水平*。我發現它是最乾淨的解決方案,因爲它使序列化方面與以序列化爲中心的類保持一致。 – Abdull