Spring data hibernate сериализует свойства элемента в соответствии с методом

У меня есть вопрос. Допустим, у нас есть объект Hotel. Этот объект содержит, например, id, имя, ссылка на объект Country, путь к фотографии темы и список других фото патчей.

Я использую Spring boot JPA + jackson. Итак, репозитории похожи на ...

@Repository
public interface HotelRepository extends CrudRepository<HotelEntity, Long> {
    List<HotelEntity> findTop3ByCountryOrderByPriorityDesc(CountryEntity country);
}

Есть ли возможность аннотировать поля объекта с помощью какого-нибудь джексона, чтобы сообщить Spring boot: «Эй, если вы используете этот метод репозитория (например, метод findTop3ByCountryOrderByPriorityDesc), возьмите только имя, идентификатор и фотографию темы. (И этот подход будет использоваться во всех сущностях и методах). Что-то типа

@JsonSerializeClasses({"top3Hotels", "hotels"})    
String name;

И использование в репозиториях

@JsonSerializeClassesUsage({top3Hotels})
List<HotelEntity> findTop3ByCountryOrderByPriorityDesc(CountryEntitycountry);

(Этот метод вернет список объектов отеля, содержащий только названия).

Примечание: это может работать и «негативно». Поэтому, если я аннотирую какое-либо поле с помощью некоторого «класса в классе», это поле не будет включено в объект, возвращаемый методом, в аннотацию которого не включен этот «внутренний класс».

Возможно ли это в данных Spring с джексоном?

Или мне действительно нужно возвращать объекты, и в случаях, когда мне не нужны какие-то свойства, я должен перебирать их и вручную "обнулять"?

Спасибо.

Насколько я знаю, это невозможно сделать автоматически. Я могу предложить вам создать собственный собственный запрос, в котором вы можете взять только необходимые поля и отменить их в настраиваемом объекте DTO. Таким образом, вы создали указанный метод в вашем JPARepository. Этот метод может извлекать только те поля, которые вам нужны, и своевременно их сериализовать.

Angelo Immediata 25.12.2018 08:22

Используйте прогнозы, как объяснено здесь в справочном руководстве.

M. Deinum 25.12.2018 09:13
0
2
37
0

Другие вопросы по теме