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.

questionAnswers(3)

yourAnswerToTheQuestion