代码之家  ›  专栏  ›  技术社区  ›  disasterkid

获取所有项的映射方法返回空列表

  •  1
  • disasterkid  · 技术社区  · 8 年前

    我正在通过学习Spring Boot this Lynda tutorial .

    通过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],methods=[GET]}”映射到 JAVAutil。列表 通用域名格式。弗兰克莫利。兰登。数据网络服务。房间管理员。findAll(java.lang.String)

    但当我导航到 localhost:8080/rooms ,我得到的只是一个空的JSON对象。

    应用属性:

    spring.jpa.hibernate.dll-auto=none
    management.endpoints.web.exposure.include=*
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   Eugen    8 年前

    尝试在ddl auto上设置更新,然后执行其他操作 创造 创建drop

    spring.jpa.hibernate.ddl-auto=update