gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:10:02 27 4
gpt4 key购买 nike

我正在通过 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com