Spring - Как удалить свойство из списка объектов? - PullRequest
0 голосов
/ 31 января 2019

У меня есть сущность "Person", которая имеет следующие свойства:

Id
Name
F-Name
Age
Address

Когда я вызываю функцию хранилища findAll () для Person, она возвращает список Persons.

List<Person> list = somefuntionToConvertIterableToList(personRepository.findAll());

В этом списке есть несколько объектов типа «Человек».

Персона ...... Id1, Имя1, F-Имя1, Возраст1, Адрес1

Персона ....... IdN, NameN, F-NameN, AgeN, AddressN

Мне нужно удалить «Id» из всех лиц, что мне делать?

Я знаю, что мы можем использовать «remove» для удаления элементасписка, но как удалить свойство в элементе?

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я думаю, вам нужно использовать: @JsonIgnore в Id выглядит следующим образом:

@JsonIgnore
   Field you want remove in reponse.

Или вы можете создать DTO и поместить все поля, которые хотите вернуть, как:

  public class PersonDTO {
      //all field you want return
   }
0 голосов
/ 31 января 2019

Конечно, вы можете установить id null или добавить игнорирование в сериализации, но, возможно, вы вообще не хотите загружать id.Обычно тогда вы используете DTO или Tuple, чтобы решить, какие поля заполнять.Поэтому не сначала заполнять все, а затем удалять ненужные (я не использовал ваш Person, а только один упрощенный пример класса).

Запрос кортежа в вашем хранилище будет просто выглядеть как (JPQL):

@Query("SELECT te.name AS name, te.created as created FROM TestEntity te")
List<Tuple> findAllTuple();

Затем потребуется дополнительная работа, чтобы кортеж соответствовал исходной сущности при сериализации.Поэтому желательно с DTO, например:

// This class would be exactly as your Person but without that id
@AllArgsConstructor // you need the constructor for new in jpql
public class TestEntityDto {
    private String name;
    private LocalDateTime created;
}

, тогда как запрос в вашем хранилище будет выглядеть так:

@Query("SELECT NEW org.example.data.entity.dto.TestEntityDto(te.name, te.created) FROM TestEntity te")
List<TestEntityDto> findAllDto();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...