【问题标题】:Spring Boot Hibernate CRUD REST API 404 ErrorSpring Boot Hibernate CRUD REST API 404 错误
【发布时间】:2020-04-12 00:46:24
【问题描述】:

我只是想通过这段代码创建一个 Spring boot Hibernate CRUD REST API:

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 Boot App 运行并转到 Postman 并尝试像这样

我无法理解为什么每次总是抛出 404 错误,谁能告诉我这段代码中缺少什么。

【问题讨论】:

  • 我看不到 EmployeController 的代码。以及为什么要创建自己的 DAO 层。你不知道 Spring Data JPA 吗?
  • 检查你的数据库是否创建了表?如果是...检查您的控制台并从那里发布堆栈跟踪。
  • @Nitika 表已创建,控制台中没有显示任何内容

标签: java spring hibernate spring-boot postman


【解决方案1】:

试试这个GET 请求,它可能对你有帮助:

http://localhost:8080/api

【讨论】:

    【解决方案2】:

    我检查了您的代码。 你的 Controller 文件的 @RestController 在哪里,你的 Controller 类中的方法的 @RequestMapping 在哪里?

    也许你应该根据你的需要写这样的东西。 如果您需要更多帮助,请告诉我。

    @RestController
    @RequestMapping("/api")
    public class EmployeController {
    
       @RequestMapping(value = "/employ")
       public void employ()  {
       }
    }
    

    【讨论】:

    • 它对我没有任何帮助,仍然遇到同样的问题
    • 您是否在配置文件中声明了上下文路径?
    【解决方案3】:

    而不是这个 -

    @Override

    公共列表get()

    使用这个 -

    @RequestMapping(value = "/Employe", method = RequestMethod.GET)

    公共列表get()

    【讨论】:

    • 在 EmployeServiceImplement 或 EmployeDAOImplement 中的位置
    • EmployeServiceImplement
    猜你喜欢
    • 2019-07-18
    • 2021-05-14
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2018-04-07
    • 2018-12-10
    • 2021-12-18
    相关资源
    最近更新 更多