我有一个抽象类
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "_type", visible = true, include = As.EXISTING_PROPERTY)
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@JsonSubTypes({
@Type(value = B.class, name = "B"),
...
})
public abstract class A {
...
}
和子类之一
@DiscriminatorValue("B")
@JsonTypeName("B")
public class B extends A {
...
}
当我要创建一个实体时,需要指定“ _type”属性。哪个很好。但是,当我需要A-s列表时,无法获取JSON响应中指定的属性“ _type”。
我尝试了多种解决方案,但找不到正确的方法。
我尝试使用事务性添加“ _type”属性,并尝试添加"include = JsonTypeInfo.As.PROPERTY"
。但是仍然没有。
当然,对于所有事情,我只有一个A类控制器。
有人可以告诉我如何在响应和其他响应中获得“ _type”吗?
tnx
答案 0 :(得分:0)
它看起来像个错误,虽然不知道在哪里。无论如何,我今天已经找到了解决方法。
@GetMapping
public Page<MyObject> findAll(Pageable pageable) {
Page<MyObject> page = ...;
return new PageImpl<>(page.getContent(), pageable, page.getTotalElements()) {};
}
请注意,此处将返回扩展了PageImpl
的匿名类的新实例(不是PageImpl
的新实例),以防止类型擦除。