findbyID returns 可选。将此对象设置为另一个对象会导致错误

findbyID returns optional . setting this object to another object cause error

    
    public String addStudyProgram(){
        
        Optional<StudyProgram> program = studyProgramRepository.findById(1);        

            Student student = new Student();        
            student.setStudentName("Mushashi");
            
            student.setProgram(program);    // error The method setProgram(StudyProgram) in the type Student is not applicable for the arguments (Optional<StudyProgram>)   
        
        return "Done";
    }

学生和项目是 DTO, 如果我将 setProgram(StudyProgram) 方法更改为 setProgram(Optional) 然后它会干扰数据库方案。解决方案是什么?

程序是可选的,使用 program.get() 获取对象值: student.setProgram(program.get()); 在 make get() 之前,你应该检查我们是否有结果: if(program.isPresent()) { student.setProgram(program.get());}

Optional<Object> 不是实际的 Object。如果您确定 Optional 中存在该值,则可以使用 obj.get()。为避免这种情况发生并确保空值安全,您可以使用 obj.orElse(defaultValue),这将 return defaultValue 作为 Object 实例。