У меня есть базовая сущность 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
}
Есть ли способ указать Джексону использовать мой собственный сериализатор только для полей, а не для самого объекта?Кстати, я не могу использовать аннотации, потому что у меня нет доступа к коду, и, как я уже сказал, классов действительно много.