Есть класс Person, в нем есть поле name. Я записываю эти данные в Mongo, но на выходе, хочу получать не записанные по 1-у классы, а все поля name из них, но в List<String>. Вот код
@RestController
public class Post_Get {
@Autowired
private PersonRepository personRepository;
private List<String> persons = new ArrayList<>();
@PostMapping("api/names")
public void post (@RequestParam("username") String name) {
Person person = new Person(name);
personRepository.save(person);
}
@GetMapping("api/names")
public List<Person> get () {
return personRepository.findAll();
}
}
@GetMapping("api/names")
public List<String> getNames() {
return personRepository.findAll()
.stream()
.map(Person::getName)
.filter(Objects::nonNull)
.collect(Collectors.toList());
}
Или без лишней конвертаций
public interface PersonRepository extends Repository<Person, Long> {
Stream<Person> findByNameNotNull();
}
@GetMapping("api/names")
public List<String> getNames() {
return personRepository.findByNameNotNull()
.map(Person::getName)
.collect(Collectors.toList());
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей