hibernate 404 Not Found 404 Not Found

eqfvzcg8  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(188)

我用springboot和mariadb数据库训练。当我测试数据恢复时,我在Postman中收到以下消息:

{
    "timestamp": "2022-03-03T13:53:18.609+00:00",
    "status": 404,
    "error": "Not Found",
    "path": "/user/all"
}

.我尝试了几个教程在复制粘贴和我总是有相同的消息.我还将把消息放在控制台中。提前感谢您的帮助。
控制器

package controller;

import model.Users;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import service.UsersService;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UsersController {

    private UsersService usersService;

    public UsersController(UsersService usersService) {
        this.usersService = usersService;
    }

    @GetMapping("/all")
    public ResponseEntity<List<Users>> getUsers() {
        List<Users> users = usersService.getUsers();
        return new ResponseEntity<>(users, HttpStatus.OK);
    }
}

服务

package service;

import model.Users;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import repository.UsersRepository;
import java.util.List;

@Service
public class UsersService {

    private UsersRepository usersRepository;

    @Autowired
    public UsersService(UsersRepository usersRepository) {
        this.usersRepository = usersRepository;
    }

    public List<Users> saveUsers(List<Users>users){
        return usersRepository.saveAll(users);
    }

    public Users saveUsers(Users users){
       return usersRepository.save(users);
    }

    public List<Users> getUsers(){
        return usersRepository.findAll();
    }

    public Users getUserById(int id_user){
        return usersRepository.findById(id_user).orElse(null);
    }
}

存托

package repository;

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

@Repository
public interface UsersRepository extends JpaRepository<Users, Integer> {

}

模型

package model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "users")
public class Users {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id_user;

    @Column(name="lastname")
    private String lastname;

    @Column(name="email")
    private String email;

    @Column(name="password")
    private String password;

    @Column(name="phone")
    private String phone;

    @Column(name="adress")
    private String adress;

    @Column(name="city")
    private String city;

    @Column(name="country")
    private String country;

}

应用性能

spring.jpa.hibernate.ddl-auto = update
spring.datasource.url = jdbc:mysql://localhost:3306/database
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.driver-class-name= com.mysql.cj.jdbc.Driver
spring.jpa.show-sql= true
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5Dialect

控制台

2022-03-03 14:52:57.479  INFO 24188 --- [           main] c.p.database.databaseApplication   : No active profile set, falling back to 1 default profile: "default"
2022-03-03 14:52:58.412  INFO 24188 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
2022-03-03 14:52:58.435  INFO 24188 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 8 ms. Found 0 JPA repository interfaces.
2022-03-03 14:52:59.190  INFO 24188 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2022-03-03 14:52:59.204  INFO 24188 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-03-03 14:52:59.204  INFO 24188 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.58]
2022-03-03 14:52:59.370  INFO 24188 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-03-03 14:52:59.370  INFO 24188 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1816 ms
2022-03-03 14:52:59.627  INFO 24188 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
2022-03-03 14:52:59.696  INFO 24188 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 5.6.5.Final
2022-03-03 14:52:59.892  INFO 24188 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2022-03-03 14:53:00.046  INFO 24188 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2022-03-03 14:53:00.252  INFO 24188 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
2022-03-03 14:53:00.272  INFO 24188 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2022-03-03 14:53:00.652  INFO 24188 --- [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2022-03-03 14:53:00.666  INFO 24188 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2022-03-03 14:53:00.722  WARN 24188 --- [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2022-03-03 14:53:01.296  INFO 24188 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2022-03-03 14:53:01.317  INFO 24188 --- [           main] c.p.database.databaseApplication   : Started dataBaseApplication in 4.589 seconds (JVM running for 5.786)
2022-03-03 14:53:18.493  INFO 24188 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-03-03 14:53:18.493  INFO 24188 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2022-03-03 14:53:18.495  INFO 24188 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
44u64gxh

44u64gxh1#

控制器类上的每一件事都实现得很好,绝对不需要其他层的实现来共享,你可能会使用SpringBootServletInitializer,在主类中添加@EnableWebMvc annotation并重写SpringApplicationBuilder方法为

@SpringBootApplication
@EnableWebMvc
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }

}

否则,如果您使用SpringApplication来sun项目,请确保使用@SpringBootApplication注解主类,并类似于

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);

    }

}

最后一件事是检查pom文件中是否存在spring Boot starter web依赖项

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

如果你不使用spring Boot parent,不要忘记将正确的版本添加到web starter artifact中。

相关问题