Я создаю приложение 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();
}
}