この抽象クラスの使用:
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "type")
@JsonSubTypes({ @JsonSubTypes.Type(value = PostingTaskInstanceDto.class, name = "TI") })
public abstract class BasePostingDto {}
そして、この継承されたクラス:
public class PostingTaskInstanceDto extends BasePostingDto {}
単一のオブジェクトに対して正しいシリアル化が得られます。これは、Spring-MVC を使用して機能します。
@RequestMapping("/{id}")
@ResponseBody
public BasePostingDto findById(@PathVariable("id") Long id) {
return createDto(postingService.findById(id));
}
しかし、リモート コントローラーから BasePostingDto のリストを取得すると、type プロパティが見つかりません。
@RequestMapping("/by-user/all")
@ResponseBody
public List<BasePostingDto> findByUser() {
return createDtoList(postingService.findByUser(AuthUtils.getUser()));
}
これはなぜですか? type プロパティを強制するにはどうすればよいですか?
List<BasePostingDto>
更新: に変更すると type プロパティも含まれますがBasePostingDto[]
、リストを使用することをお勧めします。