Serialização de Jackson: como ignorar propriedades da superclasse
Quero serializar uma classe POJO que não está sob meu controle, mas quero evitar serializar qualquer uma das propriedades provenientes da superclasse e não da classe final. Exemplo:
public class MyGeneratedRecord extends org.jooq.impl.UpdatableRecordImpl<...>,
example.generated.tables.interfaces.IMyGenerated {
public void setField1(...);
public Integer getField1();
public void setField2(...);
public Integer getField2();
...
}
Você pode adivinhar a partir do exemplo que essa classe é gerada pelo JOOQ e herda de uma classe básica complexa UpdatableRecordImpl que também possui alguns métodos semelhantes a propriedades de bean, que causam problemas durante a serialização. Além disso, tenho várias classes semelhantes, portanto, seria bom evitar duplicar a mesma solução para todos os meus POJOs gerados.
Encontrei as seguintes soluções possíveis até agora:
ignore os campos específicos provenientes da superclasse usando a técnica mixin como esta:Como posso dizer a jackson para ignorar uma propriedade para a qual não tenho controle sobre o código-fonte?
O problema é que, se a classe base for alterada (por exemplo, um novo método getAnything () aparecer nela), poderá interromper minha implementação.
implemente um serializador personalizado e lide com o problema. Isso me parece um pouco exagerado.
aliás, tenho uma interface que descreve exatamente as propriedades que quero serializar; talvez eu possa misturar uma anotação @JsonSerialize (como = IMyGenerated.class) ...? Posso usar isso para o meu propósito?
Mas, do ponto de vista do design puro, o melhor seria dizer a jackson que eu quero serializar apenas as propriedades da classe final e ignorar todas as herdadas. Existe uma maneira de fazer isso?
Desde já, obrigado.