エンティティIDを含む@RequestBody属性をSpringの対応するエンティティに変換します

イワン

エンティティIDを含むリクエストボディ属性を対応するJPAエンティティに自動変換することは可能ですか?

@Entity
public class Foo {
    @Id
    private Long id;

    // getters and setters
}  

public class Bar {
    private Foo foo;

    // getters and setters
}

@Controller
public class Controller {

    @RequestMapping(path="/foo", method=RequestMethod.POST)
    public void convertFooAction(@RequestBody Bar bar) {
        // variable bar with foo attribute containing entity with corresponding ID
    }
}

POSTリクエストで使用されるJSONリクエスト本文の例:

{ "foo": 1 }

@RequestBodyクラスがそうであるかどうかにかかわらず、すべての場合に機能するはず@Entityです。

アドバイスありがとうございます。

バラス

@JsonDeserialize戦略を利用して、次のように実現できます。

BarDeserializerクラスを定義します:

public class BarDeserializer extends JsonDeserializer<Bar> {



    @Override
    public Bar deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
         JsonNode node = p.getCodec().readTree(p);
            int id = (Integer) ((IntNode) node.get("foo")).numberValue(); 
         Bar bar= new Bar();
         Foo foo=new Foo();
         foo.setId(new Long(id));
         bar.setFoo(foo);
         return bar;
    }



}


@JsonDeserialize(using=BarDeserializer.class)
public class Bar {      

     private Foo foo;

    public Foo getFoo() {
        return foo;
    }

    public void setFoo(Foo foo) {
        this.foo = foo;
    }




}

最後に、HttpMessageConvertersを微調整します。

 @Configuration
public class WebConfig extends WebMvcConfigurationSupport {

    @Bean
    public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() {
        MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        SimpleModule module = new SimpleModule();
        module.addDeserializer(Bar.class,new BarDeserializer());
        objectMapper.registerModule(module);
        jsonConverter.setObjectMapper(objectMapper);
        return jsonConverter;
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(customJackson2HttpMessageConverter());

    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

別の既存のエンティティを含む新しいエンティティを作成する

分類Dev

XSLは、要素名に文字エンティティを含むxmlを変換します

分類Dev

mongodbの個別のフィールドに関連する属性の数を含むエンティティをクエリします

分類Dev

同じエンティティMVCコアを含む1エンティティでDboを作成します

分類Dev

すべての文字をHTMLエンティティに変換します

分類Dev

通貨記号を対応するHTMLエンティティに変換する方法

分類Dev

未定義のエンティティを含むXHTML5を解析します

分類Dev

SimpleXML は HTML エンティティを変換します

分類Dev

エンティティに、他のエンティティにも属するエンティティが存在するかどうかを通知します

分類Dev

IQueryableIEnumerableエンティティをリストに変換する

分類Dev

Android-UnicodeをHTMLエンティティに変換する

分類Dev

JPAエンティティをマップに変換する

分類Dev

TSQLをLinqからエンティティに変換する

分類Dev

HTMLエンティティをPython絵文字に変換する

分類Dev

AndroidでHTMLエンティティを文字に変換する

分類Dev

別のエンティティタイプのリストを含むSpringDataJPAにエンティティを保存します

分類Dev

Spring MVCの@RequestBody @EmbeddedIdでJPAエンティティを解析する方法

分類Dev

TinyMCEは不変のエンティティ(CKEditorの「ウィジェット」機能に対応するもの)を許可しますか?

分類Dev

エンティティを子エンティティとともにDTOに変換する

分類Dev

別のエンティティのIDを使用してエンティティを作成しますが、

分類Dev

すべての属性値が別のエンティティの属性値内にあるすべてのエンティティを検索します

分類Dev

親をプロパティとして含むエンティティのリストをロードする

分類Dev

Spring DataRepositoriesのリストで文字列を含むエンティティを検索します

分類Dev

Hibernateは2つのテーブル/エンティティに対して1つのIDを生成します

分類Dev

Linqを使用してエンティティをXMLに変換する

分類Dev

Restサービスは、IDを含むエンティティを他のエンティティまたはエンティティ自体に返す必要がありますか?

分類Dev

Javersのエンティティを含むエンティティの最新のシャドウを取得するにはどうすればよいですか?

分類Dev

対応するエンティティに値がない場合、Linqはデータを返します

分類Dev

エンティティIDでエンティティを取得する

Related 関連記事

  1. 1

    別の既存のエンティティを含む新しいエンティティを作成する

  2. 2

    XSLは、要素名に文字エンティティを含むxmlを変換します

  3. 3

    mongodbの個別のフィールドに関連する属性の数を含むエンティティをクエリします

  4. 4

    同じエンティティMVCコアを含む1エンティティでDboを作成します

  5. 5

    すべての文字をHTMLエンティティに変換します

  6. 6

    通貨記号を対応するHTMLエンティティに変換する方法

  7. 7

    未定義のエンティティを含むXHTML5を解析します

  8. 8

    SimpleXML は HTML エンティティを変換します

  9. 9

    エンティティに、他のエンティティにも属するエンティティが存在するかどうかを通知します

  10. 10

    IQueryableIEnumerableエンティティをリストに変換する

  11. 11

    Android-UnicodeをHTMLエンティティに変換する

  12. 12

    JPAエンティティをマップに変換する

  13. 13

    TSQLをLinqからエンティティに変換する

  14. 14

    HTMLエンティティをPython絵文字に変換する

  15. 15

    AndroidでHTMLエンティティを文字に変換する

  16. 16

    別のエンティティタイプのリストを含むSpringDataJPAにエンティティを保存します

  17. 17

    Spring MVCの@RequestBody @EmbeddedIdでJPAエンティティを解析する方法

  18. 18

    TinyMCEは不変のエンティティ(CKEditorの「ウィジェット」機能に対応するもの)を許可しますか?

  19. 19

    エンティティを子エンティティとともにDTOに変換する

  20. 20

    別のエンティティのIDを使用してエンティティを作成しますが、

  21. 21

    すべての属性値が別のエンティティの属性値内にあるすべてのエンティティを検索します

  22. 22

    親をプロパティとして含むエンティティのリストをロードする

  23. 23

    Spring DataRepositoriesのリストで文字列を含むエンティティを検索します

  24. 24

    Hibernateは2つのテーブル/エンティティに対して1つのIDを生成します

  25. 25

    Linqを使用してエンティティをXMLに変換する

  26. 26

    Restサービスは、IDを含むエンティティを他のエンティティまたはエンティティ自体に返す必要がありますか?

  27. 27

    Javersのエンティティを含むエンティティの最新のシャドウを取得するにはどうすればよいですか?

  28. 28

    対応するエンティティに値がない場合、Linqはデータを返します

  29. 29

    エンティティIDでエンティティを取得する

ホットタグ

アーカイブ