2016-12-12 8 views
1

2つのフィールドを持つJPAエンティティを持っています(実際のものはもっと複雑です)。私はいくつかのデータをREST(SpringコントローラでPOSTオペレーション)経由で受け取り、すぐにJPAエンティティに格納しています。私は、リクエストが送信されたときにフィールドを除外する可能性があるかどうかを確認したい場合は、ジャクソンを逆シリアル化してオブジェクトを構築します。しかし、同時に私は返信(オブジェクトがシリアル化される)を返信するときに、これらのフィールドを含めたい。JPA/Jackson - 直列化時にフィールドを除外して除外します。

@Table("key_card") 
public final class KeyCard { 
    private String username; // Don't want this to be sent as input, 
          // but want to be able to send it back 
          // in the response 
    @NotBlank 
    private final char[] password; 
} 

これを解決する方法があれば、2回(要求と応答のため)モデル化しないようにしています。

答えて

1

あなたはJSONビューを使用することができます:http://wiki.fasterxml.com/JacksonJsonView

Class Views { 

    static class AlwaysInclude { } 
    static class OnlyOnSerialize extends AlwaysInclude { } 

} 

そして、あなたのビュー上:

@Table("key_card") 
public final class KeyCard { 

    @JsonView(Views.OnlyOnSerialize.class) 
    private String username; 

    @JsonView(Views.AlwaysInclude.class) 
    @NotBlank 
    private final char[] password; 
} 
0

のみJSONデシリアライゼーションからJavaオブジェクトのプロパティを除外するにして直列化の際に代わりにあなたをその値を含めること@ JsonIgnore@JsonProperty注釈の適切な組み合わせを使用できます。

、あなたがしなければならない。特に:@JsonIgnoreプロパティ自体

  • @JsonIgnoreその設定方法と注釈
  • @JsonPropertyと注釈のgetメソッド
  • ここでは、と

    関連する問題