Как добавить сериализатор только для полей, а не для самого класса - PullRequest
0 голосов
/ 24 апреля 2018

У меня есть базовая сущность JPA с именем AbstractEntity со свойством code, и у меня также есть тонна других сущностей JPA (ProductEntity, CategoryEntity, UserEntity и т. Д.), Каждая из которых простирается от AbstractEntity.

Теперь некоторые из сущностей имеют ссылки на другие сущности, например, CategoryEntity имеет атрибут с именем parentCategory или ProductEntity имеет коллекцию категорий (categories).

Теперь я хочу с Джексоном сериализовать ProductEntity, но всякий раз, когда атрибут имеет тип AbstractEntity, я хочу, чтобы он печатал только code и ничего больше.

Мое решение было добавитьпользовательский Serializer для AbstractEntity, но, как вы можете догадаться, ProductEntity также является AbstractEntity, поэтому, когда я говорю objectMapper.writeValueAsString(product), я получаю только code.И вместо этого я хочу:

{
 code: 'abc',
 category : 'categoryA',
 price : '12 $',
 active : true
}

Есть ли способ указать Джексону использовать мой собственный сериализатор только для полей, а не для самого объекта?Кстати, я не могу использовать аннотации, потому что у меня нет доступа к коду, и, как я уже сказал, классов действительно много.

...