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
实例。
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
实例。