私は、Ajax投稿を春に使用しようとしています@RestController
。ジャクソンはの内に@Json...Reference
注釈の問題があり、投稿されたものは(@Inheritance(strategy = InheritanceType.JOINED)
)から継承されます。カスタムJsonSerializerを正しく登録するには?
私は多くの質問とその回答を見ました。今のところ、親エンティティを永久に変更することはできません。私はローカルコピーにアクセスすることができ、一時的に変更することができるので、親の注釈を削除すると、恐らくそれを修正する可能性があることが確認できました。ですから、私の解決策はカスタムJsonSerializer
を実装することです。
問題は、呼び出されないということです。私は私が見たものから正しく作ったと思う。相対コードは次のとおりです。
私はAppConfig
ファイルに@Bean
を登録します。メソッド本体のバリエーションを試しました。これは動作しない最新のものです...
@Bean
public Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder() {
SimpleModule m = new SimpleModule();
m.addSerializer(Orchard.class, new OrchardSerializer());
return new Jackson2ObjectMapperBuilder().modules(m);
}
私はシリアライザを提供しています。以下のブレークポイントは、それがアヤックスに呼び出されますJsonSerializer
...
public class OrchardSerializer extends JsonSerializer<Orchard> {
@Override
public Class<Orchard> handledType() {
return Orchard.class;
}
@Override
public void serialize(Orchard orchard, JsonGenerator jsonGenerator, SerializerProvider serializerProvider)
throws JsonProcessingException {
System.out.println("Break on me...");
}
}
私が投稿しようとしているエンティティ...私はカスタムを登録するにはどうすればよい
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
@JsonSerialize(using = OrchardSerializer.class)
public class Orchard extends Yard {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Person> contacts;
@Column(name = "COUNT")
private Integer count;
...getters/setters
}
をトリガーされることはありません役職?
可能な場合は、カスタムHttpMessageConverterが必要ですか? –