У меня есть базовый класс, как (это искусственный пример):
@Document(collection = "cars")
public class BaseCar implements Serializable
{
private int number;
private String color;
...
}
Тогда у меня есть производный класс, как:
@Document(collection = "cars")
public class FastCar extends BaseCar implements Serializable
{
private int numberOfWonRaces;
...
}
Для обоих у меня есть класс MongoRepository:
public interface BaseCarRepository extends MongoRepository<BaseCar, String> {
{ ... }
и
public interface FastCarRepository extends MongoRepository<FastCar, String> {
{ ... }
Если я сейчас сохраню FastCar в MongoDB, я получу дополнительно добавленное поле _class, которое указывает, откуда поступают данные.В этом примере он показывает FastCar.
В моем проекте у меня есть интерфейс REST API для получения автомобилей.Я использую функцию findBy, чтобы получить машину по цвету.Например:
BaseCar baseCar = baseCarRep.findByColor(color);
Даже если я использую объект BaseCar, Springboot обнаруживает, что это FastCar, и возвращает объект FastCar со всей информацией.
Вопрос: Есть ли способ заставить Springboot возвращать только BaseCar?Я не хочу отправлять всю информацию в интерфейс API REST.
Что я уже сделал: Если я удалю поле _class в MongoDB, Springboot не сможет автоматически обнаружитькласс больше и возвращает BaseCar.Но я не хочу терять эту функциональность, заставляя Springboot удалить _class ( Spring data MongoDb: MappingMongoConverter remove _class )
Кажется, что есть также способ с проекциями для фильтрацииполя, которые должны быть возвращены.Для меня это не элегантный способ, так как мне нужно снова записать все поля, и я должен обновить его, как только я обновляю класс BaseCar.
Спасибо за любую помощь.
Philipp