Сериализация Джексона: как игнорировать свойства суперкласса

Я хочу сериализовать класс POJO, который не находится под моим контролем, но хочу избежать сериализации любого из свойств, которые приходят из суперкласса, а не из конечного класса. Пример:

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();
...
}

Из примера вы можете догадаться, что этот класс генерируется JOOQ и наследуется от сложного базового класса UpdatableRecordImpl, который также имеет некоторые методы, подобные свойствам bean, которые вызывают проблемы во время сериализации. Кроме того, у меня есть несколько похожих классов, поэтому было бы неплохо избежать дублирования одного и того же решения для всех моих сгенерированных POJO.

На данный момент я нашел следующие возможные решения:

игнорируйте определенные поля, поступающие из суперкласса, используя технику mixin, например:Как я могу сказать Джексону игнорировать свойство, для которого у меня нет контроля над исходным кодом?

Проблема в том, что если базовый класс изменяется (например, в нем появляется новый метод getAnything ()), это может нарушить мою реализацию.

реализовать собственный сериализатор и решить проблему там. Это кажется немного излишним для меня.

кстати, у меня есть интерфейс, который точно описывает свойства, которые я хочу сериализовать, может быть, я могу смешать аннотацию @JsonSerialize (as = IMyGenerated.class) ...? Могу ли я использовать это для своих целей?

Но, с точки зрения чистого дизайна, лучше всего было бы сказать Джексону, что я хочу сериализовать только свойства конечного класса и игнорировать все унаследованные. Есть способ сделать это?

Заранее спасибо.

Ответы на вопрос(3)

Ваш ответ на вопрос