Не удалось продвинуться, используя next () - PullRequest
0 голосов
/ 29 января 2019

У меня есть список объектов, которые я хотел бы вернуть в Spring rest API, а затем прочитать его как массив объектов в Angular:

public Stream<PaymentTransactions> findListByReference_transaction_id(Integer id);

Я пробовал это:

@GetMapping("/reference_transaction_id/{id}")
public List<ResponseEntity<PaymentTransactionsDTO>> getByListReference_transaction_id(@PathVariable String id) {
    return transactionService
            .findListByReference_transaction_id(Integer.parseInt(id))
            .map(mapper::toDTO)
            .map(ResponseEntity::ok).collect(Collectors.toList());
}

Но когда я пытаюсь прочитать его как Angular Array, я получаю could not advance using next() Как правильно вернуть список из конечной точки отдыха?

Редактировать:

@GetMapping("{id}")
    public ResponseEntity<List<ResponseEntity<PaymentTransactionsDTO>>> get(@PathVariable String id) {
        return ResponseEntity.ok(transactionService
                .findListById(Integer.parseInt(id)).stream()
                .map(mapper::toDTO)
                .map(ResponseEntity::ok).collect(Collectors.toList()));

1 Ответ

0 голосов
/ 29 января 2019

Изменен ваш пример:

@GetMapping("/reference_transaction_id/{id}")
@ResponseBody
public ResponseEntity<List<PaymentTransactionsDTO>> getByListReference_transaction_id(@PathVariable Integer id) {
    try(var stream = transactionService
            .findListByReference_transaction_id(id)){
      var list = stream.map(mapper::toDTO).collect(Collectors.toList());
      return list.isEmpty() ? ResponseEntity.notFound().build() : ResponseEntity.ok(list) 
    }
}
  1. Добавьте ResponseBody к вашему методу
  2. Закройте поток с помощью try-with-resource (я думаю, что вы должны закрыть его)
  3. Надеюсь, у вас все получится

Что касается вашей угловой проблемы.Это помогло бы, если бы вы опубликовали некоторый исходный код:)

...