我的所有实体都继承自名为 EntidadeBase 的类:
@MappedSuperclass
public abstract class EntidadeBase implements Serializable {
private static final long serialVersionUID = -3912856473903279467L;
@Id
@QueryParam("id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
@PodamStrategyValue(value = NullStrategy.class)
private Long id;
@Column(name = "cadastro_data", nullable = false)
@PodamStrategyValue(value = PastDateStrategy.class)
private LocalDate dataCadastro;
@Column(name = "modificado_data", nullable = false)
@PodamStrategyValue(value = PastDateStrategy.class)
private LocalDate dataModificacao;
@QueryParam("modificado")
@Column(nullable = false)
@PodamBooleanValue(boolValue = false)
private Boolean modificado;
@QueryParam("ativo")
@Column(nullable = false)
@PodamBooleanValue(boolValue = true)
private Boolean ativo;
}
它是部署在 tomcat 8 上的 JAX-RS/Jersey Web 服务,实际上使用默认的 Jersey impl 进行 POJO 绑定(bind):MOXy。
我的问题是,例如,当我发送其中包含 JSON 实体的 PUT 请求时,EntidadeBase 字段不会解析为我的 EndPoint 对象
这是一个例子:
@PUT
@Override
@Transactional(qualifier = ForTransaction.class)
public Response atualizar(@NotNull Abrangencia entidade) {
return super.atualizar(entidade);
}
我怎样才能让 MOXy 解析 JSON 值到继承的父类(super class)的字段?
最佳答案
首先,here据说,您应该添加依赖项以启用 MOXy:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.16</version>
</dependency>
然后,here您可以看到将 MOXy 与 Jersey 结合使用的示例。您需要解析的 Bean 应该具有根注释 @XmlRootElement(即使对于 JSON:))。另外,类的可序列化成员应该在类中定义 getter 和 setter。
关于java - 使用 Jersey 默认实现 : MOXy 反序列化多态类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28887647/