在我的SpringBoot应用程序中,我正在使用CrudRepo。我发现返回值有问题:必需!=找到
GitHub:https : //github.com/einhar/WebTaskManager/tree/findById-problem
无论将方法返回类型从“任务”更改为“对象”->“ IDE都停止显示错误”,但由于稍后验证数据类型而可能会出现问题。
你知道怎么解决吗?有什么提示吗?
public interface TaskRepository extends CrudRepository<Task, Integer> {}
@Service
@Transactional
public class TaskService {
@Autowired
private final TaskRepository taskRepository;
public TaskService(TaskRepository taskRepository) {
this.taskRepository = taskRepository;
}
public List<Task> findAll() {
List<Task> tasks = new ArrayList<>();
for (Task task : taskRepository.findAll()) {
tasks.add(task);
}
return tasks; // Work properly :)
}
/* ... */
public Task findTask(Integer id) {
return taskRepository.findById(id); // Find:Task | Required: java.util.Optional :(
}
}
findById方法是可选的return,因此您可以通过get()方法获取任务。您可以选择以下3种情况:未找到任务时会出现异常:
public Task findTask(Integer id) {
return taskRepository.findById(id).get();
}
当找不到Task时,您将得到null:
public Task findTask(Integer id) {
return taskRepository.findById(id).orElse(null);
}
找不到任务时,您将获得一个空的新任务:
public Task findTask(Integer id) {
return taskRepository.findById(id).orElse(new Task());
}
或者只是返回Optional对象
public Optional<Task> findTask(Integer id) {
return taskRepository.findById(id);
}
非常感谢!我已经举了一些例子,并且了解了它是如何工作的。