Я исхожу из фона Rails и перехожу на Java. Я работал над проектом шаблона, который имеет действие show, определенное в MatchesController.java;Указатель Action Java Spring Controller
@RestController
final class MatchesController {
private final MatchRepository matchRepository;
@Autowired
MatchesController(MatchRepository matchRepository) {
this.matchRepository = matchRepository;
}
@RequestMapping(method = RequestMethod.GET, value = "/matches/{id}")
ResponseEntity<Match> show(@PathVariable String id) {
Match match = matchRepository.findOne(id);
if (match == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
} else {
return new ResponseEntity<>(match, HttpStatus.OK);
}
}
}
В Rails действие шоу будет выглядеть примерно так;
def show
@match = Match.find(params[:id])
end
Показатель индекса будет выглядеть;
def index
@matches = Match.all
end
Я ищу, как я хотел бы написать эквивалентное действие индекса в Java/Spring, и я чувствую, что я должен определить или использовать какой-то список или массив объектов, чтобы получить все matchRepository записей:
Я пробую что-то вроде следующего, но, конечно, это неправильно и не будет компилироваться. Действие show отлично работает и прекрасно взаимодействует с моей локальной mysql db. Я просто полноценный java/spring новичок, и я обожаю.
@RequestMapping(method = RequestMethod.GET, value = "/matches")
ResponseEntity<Match> index() {
Match matches = matchRepository.findAll();
if (matches == null) {
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
} else {
return new ResponseEntity<>(matches, HttpStatus.OK);
}
}
Ошибки компиляции;
[ERROR] СБОР ОШИБКА:
/Users/home/Latta/Spring/pong_matcher_spring/src/main/java/org/pongmatcher/web/MatchesController.java:[36,48] несовместимые типы: Java .util.List не могут быть преобразованы в org.pongmatcher.domain.Match [INFO] 1 ошибка