gpt4 book ai didi

java - CRUD Repository findById()返回值不同

转载 作者:行者123 更新时间:2023-12-01 06:34:20 26 4
gpt4 key购买 nike

在我的 SpringBoot 应用程序中,我使用的是 CrudRepo。我发现返回值有问题:必需!=找到

GitHub:https://github.com/einhar/WebTaskManager/tree/findById-problem

无论将方法返回类型从任务更改为对象 -> IDE 都停止显示错误,但由于稍后的数据类型验证,可能会出现问题。

你知道怎么解决吗?有什么提示吗?

CrudRepo

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();
}

当没有找到任务时,您将得到 null:

public Task findTask(Integer id) {
return taskRepository.findById(id).orElse(null);
}

当未找到任务时,您将得到一个空的新任务:

public Task findTask(Integer id) {
return taskRepository.findById(id).orElse(new Task());
}

或者只返回可选对象

public Optional<Task> findTask(Integer id) {
return taskRepository.findById(id);
}

关于java - CRUD Repository findById()返回值不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49967316/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com