Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧靴。为什么即使数据库中有对象,by-GET方法仍然返回null?_Java_Spring_Spring Boot_Rest - Fatal编程技术网

Java 弹簧靴。为什么即使数据库中有对象,by-GET方法仍然返回null?

Java 弹簧靴。为什么即使数据库中有对象,by-GET方法仍然返回null?,java,spring,spring-boot,rest,Java,Spring,Spring Boot,Rest,我正在用Spring Boot创建一个CRUD应用程序。我实现了create特性,并主动添加到数据库中,并使用H2控制台进行检查,但是我的GET方法遇到了问题。我将projectId作为参数传递以获取该项目。我正在用Postman测试我的端点,虽然状态代码是200,但我没有看到任何JSON。 在findProjectByIdentifier()中,我添加了一个如果Object==null,print ProjectId not found,即使我传递了一个有效的ProjectId,当它确实在数据

我正在用Spring Boot创建一个CRUD应用程序。我实现了create特性,并主动添加到数据库中,并使用H2控制台进行检查,但是我的GET方法遇到了问题。我将
projectId
作为参数传递以获取该项目。我正在用Postman测试我的端点,虽然状态代码是200,但我没有看到任何JSON。 在
findProjectByIdentifier()
中,我添加了一个
如果Object==null,print ProjectId not found
,即使我传递了一个有效的ProjectId,当它确实在数据库中时,它也会返回一个“ProjectId not found”。既然这个语句打印出来了,我没有得到任何JSON,这意味着什么?问题出在哪里

项目服务类别:


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;
    }
}
项目控制器

@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);
    }
}
不要使用大写字母: 这将导致产生不同于H2表中的值或先用大写字母保存在表中的值。
仅供参考,当找不到实体/资源时,要使用的状态代码是404而不是200。

也共享您的项目POJO类。调用
findProjectByIdentifier
方法时,问题可能出在
projectId.toUpperCase()
中。显示存储在数据库中的项目id示例。您可以将
可选
作为
ProjectRepository#findByProjectIdentifier
方法的结果类型。然后,如果指定的id未找到项目,则可以从
ProjectService#getProjectById
方法引发异常:
projectRepository.findByProjectIdentifier(projectId).orelsetrow(EntityNotFoundException::new)
@Repository
public interface ProjectRepository extends CrudRepository<Project, Long> {

    Project findByProjectIdentifier(String projectId);
}
@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();
    }
}