Весенний ботинок. Почему метод GET возвращает ноль, даже если в базе данных есть объект? - PullRequest
0 голосов
/ 29 февраля 2020

Я создаю приложение CRUD с Spring Boot. Я реализовал функцию создания и активно добавляю в свою базу данных и проверяю с помощью консоли H2, но у меня возникают проблемы с моим методом GET. Я передаю projectId в качестве параметра, чтобы получить этот проект. Я проверяю свою конечную точку с почтальоном, и хотя код состояния 200, я не вижу никаких JSON. В findProjectByIdentifier() я добавил if Object == null, print ProjectId not found, и даже если я передал действительный идентификатор проекта, он возвращает «идентификатор проекта не найден», когда он действительно находится в базе данных. Поскольку это утверждение печатается, а я не получаю JSON, что это значит? Где может быть проблема l ie?

Класс ProjectService:


import io.ppmtool.domain.Project;
import io.ppmtool.exceptions.ProjectIdException;
import io.ppmtool.repositories.ProjectRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ProjectService {

    @Autowired
    private ProjectRepository projectRepository;

    public Project saveOrUpdateProject(Project project) {
       try {
           project.setProjectIdentifier(project.getProjectIdentifier().toUpperCase());
           return projectRepository.save(project);
       } catch (Exception e){
           throw new ProjectIdException("Project ID '"+project.getProjectIdentifier().toUpperCase()+ "' already exists.");
       }
    }

    public Project findProjectByIdentifier(String projectId){
        Project project = projectRepository.findByProjectIdentifier(projectId.toUpperCase());
        if(project == null) {
            throw new ProjectIdException("Project ID does not exists.");
        }
        return project;
    }
}

ProjectController

@RequestMapping("/api/project")
public class ProjectController {

    @Autowired
    private ProjectService projectService;

    @Autowired
    private MapValidationErrorService mapValidationErrorService;

    @PostMapping("")
    public ResponseEntity<?> createNewProject(@Valid @RequestBody Project project, BindingResult result) {

        ResponseEntity<?> errorMap = mapValidationErrorService.MapValidationService(result);
        if(errorMap != null) return errorMap;    
        Project project1 = projectService.saveOrUpdateProject(project);
        return new ResponseEntity<Project>(project, HttpStatus.CREATED);
    }

    @GetMapping("/{projectId}")
    public ResponseEntity<?> getProjectById(@PathVariable String projectId){

        Project project = projectService.findProjectByIdentifier(projectId);
        return new ResponseEntity<Project>(project, HttpStatus.OK);
    }
}

ProjectRepository

@Repository
public interface ProjectRepository extends CrudRepository<Project, Long> {

    Project findByProjectIdentifier(String projectId);
}

Pojo

@Entity
public class Project {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @NotBlank(message="Project name is required")
    private String projectName;
    @NotBlank(message = "Project Identifier is required")
    @Size(min=4, max=5, message="Please use 4-5 characters")
    @Column(updatable = false, unique = true)
    private String projectIdentifier;
    @NotBlank(message="Project description required")
    private String descripton;
    @JsonFormat(pattern="yyyy-mm-dd")
    private Date start_date;
    @JsonFormat(pattern="yyyy-mm-dd")
    private Date end_date;
    @JsonFormat(pattern="yyyy-mm-dd")
    private Date created_At;
    @JsonFormat(pattern="yyyy-mm-dd")
    private Date updated_At;

    public Project() {

    }

    public Long getId() {
        return id;
    }

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

    public String getProjectName() {
        return projectName;
    }

    public void setProjectName(String projectName) {
        this.projectName = projectName;
    }

    public String getProjectIdentifier() {
        return projectIdentifier;
    }

    public void setProjectIdentifier(String projectIdentifier) {
        this.projectIdentifier = projectIdentifier;
    }

    public String getDescripton() {
        return descripton;
    }

    public void setDescripton(String descripton) {
        this.descripton = descripton;
    }

    public Date getStart_date() {
        return start_date;
    }

    public void setStart_date(Date start_date) {
        this.start_date = start_date;
    }

    public Date getEnd_date() {
        return end_date;
    }

    public void setEnd_date(Date end_date) {
        this.end_date = end_date;
    }

    public Date getCreated_At() {
        return created_At;
    }

    public void setCreated_At(Date created_At) {
        this.created_At = created_At;
    }

    public Date getUpdated_At() {
        return updated_At;
    }

    public void setUpdated_At(Date updated_At) {
        this.updated_At = updated_At;
    }

    @PrePersist
    protected void onCreated() {
        this.created_At = new Date();
    }

    @PreUpdate
    protected void onUpdate() {
        this.updated_At = new Date();
    }
}

1 Ответ

0 голосов
/ 29 февраля 2020

Не используйте верхний регистр: это приводит к значению, отличному от указанного в вашей таблице H2, или сохраняйте его в таблице первым. К вашему сведению, когда сущность / ресурс не найден, код состояния для использования - 404, а не 200.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...