整个第一行带有红色下划线,并显示消息:Incompatible types. Required: Java.lang.Long. Found: void.
Long userId = request.ifPresent(x -> x.getUsers().getId());
Optional<Users> employee = usersRepository.findOne(userId);
我的findOne方法:
// fetch an individual user by ID
Optional<Users> user = usersRepository.findOne(1L);
log.info("User found with findOne(1L):");
log.info("--------------------------------");
log.info(user.toString());
log.info("");
用户POJO:
@Entity
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="user_id")
private Long id;
...
public Long getId() {
return id;
}
...
}
这里发生了什么?
答案 0 :(得分:3)
正如其他海报所指出的那样,你试图以错误的方式使用ifPresent
。
假设request
是Optional<Request>
,您可能会做类似的事情:
Optional<Long> userIdMaybe = request.map(r -> r.getUsers().getId());
Optional<Users> employee = userIdMaybe.flatMap(usersRepository::findOne);
答案 1 :(得分:2)
假设请求是一个可选ifPresent
消耗一个值并返回void。
编译正确地告诉您不能将void分配给Long。