を@JsonIgnoreこれを使用してジャクソンは、私は、デフォルトのメソッドとのインタフェースを持って継承したJava 8のデフォルトの方法
@Entity
public class JpaBook implements Book {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
// ...
@Override
public String getTitle() {
return title;
}
}
私が気づいたのは、JacksonがデフォルトのメソッドgetSentenceForTitle()
もシリアル化していることに気づいた。私の特別なケースでは、sentenceForTitle
をシリアル化することは望ましくない。
デフォルトのメソッドをシリアル化したくないということをジャクソンに知らせる方法はありますか?そのメソッドの動作を維持しますか?私が思いついた現在の回避策は、デフォルトのメソッドをオーバーライド@JsonIgnore
でそれに注釈を付けると、デフォルトのメソッドに委譲されています
@Entity
public class JpaBook implements Book {
// ...
@Override
@JsonIgnore
public String getSentenceForTitle() {
return Book.super.getSentenceForTitle();
}
}
しかし、この解決策は、多くのデフォルトのメソッドとのインタフェースのための非常に冗長とエラーが発生しやすい得ることができます。
恐ろしい、私は、* JPAエンティティクラスのレベルに '(..)JsonIgnoreProperties @オプション*'と一緒に行きました。このシリアライゼーションの側面をシリアライゼーション中心クラスに結びつけるので、私はそれが最もクリーンな解決策であることがわかります。 – Abdull