【问题标题】:Spring Boot Error 404 Not Found HibernateSpring Boot 错误 404 未找到休眠
【发布时间】:2020-04-12 05:27:34
【问题描述】:

我是 Spring Boot 的新手,我只是想通过这段代码从数据源获取/获取数据:

EmployeController.java

@RestController
@RequestMapping("/api")

    public class EmployeController {

        @Autowired
        private EmployeService employeService;

        @GetMapping("/employe")
        public List<Employe> get(){
            return employeService.get();
        }
    }

Employe.java

@Entity
@Table(name="employe")
public class Employe {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column
    private int id;
    @Column
    private String name;
    @Column
    private String gender;
    @Column
    private String department;
    @Column
    private Date dob;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
    public Date getDob() {
        return dob;
    }
    public void setDob(Date dob) {
        this.dob = dob;
    }
    @Override
    public String toString() {
        return "Employe [id=" + id + ", name=" + name + ", gender=" + gender + ", department=" + department + ", dob="
                + dob + "]";
    }

EmployeService.java

public interface EmployeService {
    List<Employe> get();
    Employe get(int id);
    void save(Employe employe);
    void delete(int id);
}

EmployeServiceImplement.java

@Service
public class EmployeServiceImplement implements EmployeService {

    @Autowired
    private EmployeDAO employeDAO;

    @Transactional
    @Override
    public List<Employe> get() {
        return employeDAO.get();
    }
}

EmployeDAO.java

public interface EmployeDAO {
    List<Employe> get();
    Employe get(int id);
    void save(Employe employe);
    void delete(int id);
}

EmployeDAOimplement.java

@Repository
public class EmployeDAOImplement implements EmployeDAO {

    @Autowired
    private EntityManager entityManager;

    @Override
    public List<Employe> get() {
        Session currentSession = entityManager.unwrap(Session.class);
        Query<Employe> query = currentSession.createQuery("from Employe", Employe.class);
        List<Employe>list = query.getResultList();  
        return list;
    }
}

我已将所有与 MySQl 数据库相关的配置写入 application.properties 并在我的数据库中创建了一个员工表。

据我所知,Spring Data JPA 是比这更好的实现方式,但我只想从相同的开始......作为 Spring Boot App 运行我的项目,然后从 Postman 我得到 404 错误,如这个:

我无法理解为什么这会显示 404 错误以及如何解决它..

【问题讨论】:

  • 能否请您编辑以发布您的 Spring Boot 主应用程序类?

标签: java spring hibernate spring-boot postman


【解决方案1】:

你也可以这样做:

在您的应用程序道具文件中设置:

server.servlet.context-path=/api

然后去掉RequestMapping注解:

@RestController
public class EmployeController {

    @Autowired
    private EmployeService employeService;

    @GetMapping("/employe")
    public List<Employe> get(){
        return employeService.get();
     }
 }

那么你应该可以用请求的 URL 来检索它

【讨论】:

  • 应用server.servlet.context-path=/api后是否需要去掉Mapping Annotaion
  • 是的,您可以删除答案中所述的注释。否则端点将如下所示:“api/api/employe”
【解决方案2】:

您需要在请求 URI 中添加您的工件名称(项目名称)。例如:

http://localhost:8080/my-app/api/employe

如果您不想在 URI 中使用它,请更改 application.properties 中的 contextPath 配置:

server.contextPath = /

【讨论】:

    【解决方案3】:

    控制器上的注解@RequestMapping("/api") 表示路由将是http://localhost:8080/api,但您正在尝试调用http://localhost:8080/api/employe。我想你应该把它改成@RequestMapping("/api/employe")

    【讨论】:

      【解决方案4】:

      您在 application.properties 中的上下文路径配置是什么?仅当您设置它时,您才会看到与此 server.servlet.context-path 相同的属性。如果您没有设置它,那么路径http://localhost:8080/api/employe 可能是正确的,在这种情况下,我建议检查您的应用程序是否真的在端口8080 上运行,是否有其他应用程序在端口8080 上运行以及您的应用程序在其他端口上运行,那么您肯定会得到 404 响应。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 2020-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多