java - 如何从可选 ifPresentOrElse 返回方法值
问题描述
我有一个编译错误,因为 findByUserIdAndVoteDate 返回 void (不是 VoteResponseDTO ), voteRepository.save() - 返回我需要的值,我怎样才能得到它?
public VoteResponseDTO addVote(User user, VoteCreationDTO voteCreationDTO) {
VoteResponseDTO createdVote = voteRepository.findByUserIdAndVoteDate(user.getId(), LocalDate.now(clock))
.ifPresentOrElse(oldVote -> {
var vote = new Vote(user, restaurant);
vote.setId(oldVote.getId());
voteRepository.save(vote);
},
() -> voteRepository.save(new Vote(user, restaurant)));
}
解决方案
感谢@Michael,它有效。
VoteResponseDTO voteResponse = toVoteResponseDTO(voteRepository.findByUserIdAndVoteDate(user.getId(), LocalDate.now(clock))
.map(oldVote -> {
var vote = new Vote(user, restaurant);
vote.setId(oldVote.getId());
return voteRepository.save(vote);
}).orElseGet(
() -> voteRepository.save(new Vote(user, restaurant))));
推荐阅读
- wordpress - 是否可以在插件激活时添加菜单项来吸引我的帐户页面?
- mysql - 变量列之间的高效连接
- c# - 模型和实例类分离
- python - 如何使用 discord.py 和 Python 更改所有文本通道的权限?
- css - 如何减小角材料中占位符的字体大小
- c# - 使用现有数据库数据在 Entity Framework 6 中创建种子迁移
- mysql - 每个派生表都必须有自己的别名 mysql 错误代码 1248
- sql - 在 Laravel 中计算单个列的不同值
- pyspark - 在 pyspark 中删除所有重复的实例
- apache - .htaccess 用于 SPA,将传入请求重写为 index.html,静态资源除外