java - 获取所有项目的映射方法返回一个空列表

标签 java spring hibernate spring-boot

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

通过 GET 方法 /room 我应该能够获取嵌入式数据库中所有当前房间的列表。 schema.sqldata.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);
}

这是我们创建的一个临时 Controller 类,只是为了测试这个方法 (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 中看到有关此映射的消息:

Mapped "{[/rooms],methods=[GET]}" onto 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=*

最佳答案

尝试在 ddl-auto 上设置更新,然后是 createcreate-drop

spring.jpa.hibernate.ddl-auto=update

关于java - 获取所有项目的映射方法返回一个空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50450795/

相关文章:

java - 拒绝执行异常

java - 冲突的模块。 LoggerFactory 不是 Logback LoggerContext 但 Logback 在类路径上

java - Spring JPA : Prevent deleting if relations still exist

java - 一个实体类映射几个表

java - 将对象添加到 HashSet

java - 如何在 jsonparsing 的 android 中用 %20 替换 url 中的空格

java - Spring配置问题:无法找到用于XML模式 namespace 的Spring NamespaceHandler,令人讨厌的资源:类路径

java - 无论如何@Inject/@Autowire 一个内部类到一个外部类?

database - 访问数据库中平均静态数据的最佳方式(Hibernate、Postgres)

java - 将对象添加到 StringBuilder