Сопоставленный метод для получения всех элементов возвращает пустой список - PullRequest
0 голосов
/ 21 мая 2018

Я изучаю Spring Boot через это учебное пособие по Lynda .

С помощью метода GET /room я смогу получить список всех текущих комнат в моей встроенной базе данных.Оба файла schema.sql и data.sql находятся на месте.

Мой класс сущностей Room.java:

package com.frankmoley.landon.data.entity;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "ROOM")
public class Room {
    @Id
    @Column(name = "ROOM_ID")
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;
    @Column(name = "NAME")
    private String name;
    @Column(name = "ROOM_NUMBER")
    private String number;
    @Column(name = "BED_INFO")
    private String bedInfo;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getBedInfo() {
        return bedInfo;
    }

    public void setBedInfo(String bedInfo) {
        this.bedInfo = bedInfo;
    }

}

Класс хранилища RoomRepository.java:

package com.frankmoley.landon.data.repository;

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import com.frankmoley.landon.data.entity.Room;

@Repository
public interface RoomRepository extends CrudRepository<Room, Long> {

    Room findByNumber(String number);
}

И это временный класс контроллеров, который мы создаем просто для тестирования этого одного метода (RoomController.java):

package com.frankmoley.landon.data.webservice;

import com.frankmoley.landon.data.entity.Room;
import com.frankmoley.landon.data.repository.RoomRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
public class RoomController {
    @Autowired
    private RoomRepository repository;

    @RequestMapping(value="/rooms", method= RequestMethod.GET)
    List<Room> findAll(@RequestParam(required=false) String roomNumber){
       List<Room> rooms = new ArrayList<>();
        if(null==roomNumber){
            Iterable<Room> results = this.repository.findAll();
            results.forEach(room-> {rooms.add(room);});
        }else{
            Room room = this.repository.findByNumber(roomNumber);
            if(null!=room) {
                rooms.add(room);
            }
        }
        return rooms;
    }
}

Когда я запускаю приложение,Я вижу сообщение об этом отображении в Eclipse:

Отображено "{[/ rooms], method = [GET]}" на java.util.List com.frankmoley.landon.data.webservice.RoomController.findAll (java.lang.String)

Но когда я перехожу к localhost:8080/rooms, все, что я получаю, это пустой объект JSON.

application.properties:

spring.jpa.hibernate.dll-auto=none
management.endpoints.web.exposure.include=*

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте установить обновление на ddl-auto, что-нибудь еще, затем create или create-drop

spring.jpa.hibernate.ddl-auto=update
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...