REST API 在带有 H2 数据库的 Spring Boot maven 多模块项目中总是抛出 404 错误

Dee*_*ika 5 java spring maven spring-data-jpa spring-boot

我是 Spring Boot 的新手,我用 Spring Boot 创建了一个多模块项目(maven)。我创建了一些 REST API 并连接到 H2 数据库。数据库连接成功,可以在localhost运行。

这是我的项目树.. User-Management 是父模块和核心,serverAPI 是子模块。我为每个模块创建了包并添加了相关的类。

我已经尝试了我所知道的一切,并在谷歌上搜索了大约 5 天,但没有任何效果对我有用。我已经包括了我在这里写的每一个代码。请帮我找出问题所在。(我使用的是intellij idea 2020.3 Ultimate)

在此处输入图片说明

用户.java

package com.hms.usermanagement.core.model;
import javax.persistence.*;

@Entity
@Table(name = "users")
public class User {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;

@Column(name = "full_name")
private String fullName;

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

public User() {
}

public User(long id, String fullName, String email) {
    this.id = id;
    this.fullName = fullName;
    this.email = email;
}

public long getId() {
    return id;
}

public void setId(long id) {
    this.id = id;
}

public String getFullName() {
    return fullName;
}

public void setFullName(String fullName) {
    this.fullName = fullName;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}}
Run Code Online (Sandbox Code Playgroud)

用户库

package com.hms.usermanagement.core.repository;

import com.hms.usermanagement.core.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface UserRepository extends JpaRepository<User,Long> {
 } 
Run Code Online (Sandbox Code Playgroud)

应用

package com.hms.usermanagement.serverAPI.application;

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

@SpringBootApplication
public class Application {
    public static void main(String[] args){
        SpringApplication springApplication = new SpringApplication(Application.class);
        springApplication.run(args);
}}
Run Code Online (Sandbox Code Playgroud)

用户控制器

package con.hms.usermanagement.serverAPI.controller;


import com.hms.usermanagement.core.model.User;
import com.hms.usermanagement.core.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/api")
public class UserController {

@Autowired
private UserRepository userRepository;

//Create Users
@PostMapping("/user")
public User createUser( @Validated @RequestBody User user){
    return userRepository.save(user);
}

//View all Users
@GetMapping("/users")
public List<User> getAllUsers(){
    return userRepository.findAll();
}

//Update Users
@PutMapping("/users/{id}")
public ResponseEntity <User> updateUser(@PathVariable(value = "id") long userId , @RequestBody User userDetails){
    Optional<User> user = userRepository.findById(userId);
    if(user.isPresent()){
        User _user = user.get();
        _user.setFullName(userDetails.getFullName());
        _user.setEmail(userDetails.getEmail());
        return new ResponseEntity<>(userRepository.save(_user), HttpStatus.OK);
    }else {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}

//Delete Users
@DeleteMapping("/users/{id}")
public ResponseEntity<?> deleteUser(@PathVariable(value = "id") long userId){
    userRepository.findById(userId);
    userRepository.deleteById(userId);
    return ResponseEntity.ok().build();
}
Run Code Online (Sandbox Code Playgroud)

应用程序属性

spring.datasource.url=jdbc:h2:~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

#enable H2 console
spring.h2.console.enabled=true

#custom H2 console
spring.h2.console.path=/h2
Run Code Online (Sandbox Code Playgroud)

架构-h2.sql

CREATE TABLE users (id long PRIMARY KEY AUTO_INCREMENT, full_name VARCHAR(30), email VARCHAR(50));
Run Code Online (Sandbox Code Playgroud)

我试过使用这两个网址 在此处输入图片说明

在此处输入图片说明

即使“id”字段是自动生成的,但我也尝试使用邮递员添加 id ..但仍然遇到相同的错误 在此处输入图片说明

小智 -1

删除@Validated并尝试@Valid如下

使用 [LOCALHOST]:[PORT]/api/user 调用

//Create Users
@PostMapping("/user")
public User createUser(@RequestBody @Valid User user){
    return userRepository.save(user);
}
Run Code Online (Sandbox Code Playgroud)