hibernate 如何解决 Postman 和浏览器客户端在JSON中的数组[{}]中都给出空花括号的HTTP方法问题?

ruyhziif  于 2023-08-06  发布在  Postman
关注(0)|答案(1)|浏览(101)

当我试图从我的MySQL数据库codedecode使用HTTP获取方法访问数据无论是在浏览器客户端或 Postman 客户端有空花括号数组[{}]显示。但是,我的数据库里有数据。我已经附上了我所有的代码,包括我的Pom.xml和我的项目的应用程序 prop 的依赖关系。

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.1.1</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.codedecode</groupId>
<artifactId>CodeDecodeCRUD</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>CodeDecodeCRUD</name>
<description>Demo project for Spring Boot and Hibernate</description>
<properties>
    <java.version>17</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
            <excludes>
            <exclude>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
            </exclude>
        </excludes>
        </configuration>
     </plugin>
    </plugins>
</build>
</project>

字符串

Spring Container

package com.codedecode.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class CodeDecodeCrudApplication {
    public static void main(String[] args) {
        SpringApplication.run(CodeDecodeCrudApplication.class, args);
    }
}

员工休息控制器

package com.codedecode.demo.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.codedecode.demo.entity.Employee;
import com.codedecode.demo.repos.EmployeeCrudRepo;

@RestController
@RequestMapping("/code")
public class EmployeeController {

    @Autowired
    EmployeeCrudRepo empCrud;
    
    @GetMapping("/getall")
    public List<Employee> getAllEmployees() {
        System.out.println("getting all employees");
    return empCrud.findAll();
    }   
}

员工主体

package com.codedecode.demo.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

import lombok.Data;

@Entity
@Table(name = "emp")
@Data
public class Employee {
    
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    
    private String name;
}

员工CRUD仓库

package com.codedecode.demo.repos;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.codedecode.demo.entity.Employee;

@Repository
public interface EmployeeCrudRepo extends JpaRepository<Employee, Long>{    
    
}

应用.属性

#server.port=9090
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/codedecode?useSSL=false
spring.datasource.username=root
spring.datasource.password=root

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=create
#spring.jpa.show-sql=true
#spring.jpa.properties.hibernate.format_sql=true


我用的是,MySQL v8.0.33,Spring v3.1.1,Java v17,STS v4,lombok v1.18.28
我试着检查我的MySQL数据库的配置,但一切正常。服务器运行时创建表。
我试着重新检查我的代码和所有的依赖项,但找不到任何问题。

izkcnapc

izkcnapc1#

以下是您可以检查的几个事项来解决问题:

  • 数据库连接:
  • 确保MySQL服务器已启动并运行。
  • 验证数据库(codedecode)是否存在,并且可以使用提供的凭据(root/root)进行访问。
  • 检查codedecode数据库中的emp表并确保它包含数据。
  • 实体Map:
  • 验证Employee实体类(com.codedecode.demo.entity.Employee)是否正确Map到数据库中的emp表。
  • 检查实体中的列名是否与数据库表中的列名匹配(idname)。
  • 确保从正确的包(jakarta.persistence.*lombok.*)导入@Entity@Table@Data注解。
  • 存储库配置:
  • 确认EmployeeCrudRepo接口(com.codedecode.demo.repos.EmployeeCrudRepo)正确扩展了JpaRepository
  • 检查存储库接口是否被Spring扫描,确保它在组件扫描覆盖的包中或显式配置为存储库。
  • 应用程序配置:
  • 确保application.properties文件位于正确的目录(src/main/resources)中,并且应用程序正在拾取该文件。
  • 检查MySQL JDBC驱动程序(mysql-connector-java)是否被Maven正确解析并包含在类路径中。
  • 验证spring.datasource.urlspring.datasource.usernamespring.datasource.password属性是否正确配置为连接到MySQL服务器。
  • 日志记录和调试:
  • 在Sping Boot 应用程序中启用调试日志记录,方法是将以下行添加到application.properties
logging.level.org.springframework=DEBUG

字符串

  • 在应用程序启动期间查看日志,以确保正在建立数据库连接并且正确Map实体。
  • 检查与数据库连接、实体Map或存储库配置相关的任何错误消息或警告。

通过查看这些方面,您应该能够识别导致空JSON响应的问题。此外,检查应用程序日志和任何错误消息可以提供对问题的有价值的见解。

相关问题