我有一个用户表,其中我有(Id,reportingUserId)。reportingUserId 包含一个字符串,该字符串表示用户向其报告的用户 Id(上级)。现在,在删除用户时,我应该检查是否有任何用户向此用户报告。如果它们存在,那么我应该将其报告用户 Id 值更改为上级的用户 Id。此处报告用户是当前用户的劣势列表。
现在,当我这样做的时候,我得到了lambda表达式中使用的变量应该是最终的或实际上是最终的
在第二个if条件的ementerId
处出现错误。有什么方法可以解决这个问题吗?或者我应该使用old for循环。
String managerId = null;
if(!StringUtils.isEmpty(user.getReportingUserId())){
Optional<User> manager =Repository.findById(Long.valueOf(user.getReportingMsisdn()));
if(manager.isPresent())
managerId = Long.toString(manager.get().getId());
}
if(!reportingUsers.isEmpty()) {
reportingUsers.forEach(user -> x.setReportingUserId(managerId));
Repository.saveAll(reportingUsers);
}
您可以像这样重新实现负责查找< code > managerid 的部分,它将只被分配一次。
String managerId = StringUtils.isEmpty(user.getReportingUserId()) ? null :
repository.findById(Long.valueOf(user.getReportingMsisdn())) // Optional<User>
.map(manager -> Long.toString(manager.getId())) // Optional<String >
.orElse(null);
提取计算< code>managerId的方法,并将引用定义为< code>final
final String managerId = calculateManagerId(user);
if(!reportingUsers.isEmpty()) {
reportingUsers.forEach(user ->
x.setReportingUserId(managerId));
Repository.saveAll(reportingUsers);
}
private String calculateManagerId(User user) {
// code from the first if-condition in the question
}
我现在正在学习如何使用lambda表达式,我已经看到了一些带有简单示例的教程: 但是我的编译器显示这个错误: 我是不是忘了什么?
我试图在forEach循环中使用lambda表达式将每个对象计算的字符串连接到变量“i”。 它给我带来了一个错误,因为外部变量必须是final才能在lambda表达式中使用。 但是如果我将变量设置为final,我就不能更改它,代码也不能工作。 有人有解决办法吗?
我正在将oracle从10升级到12,对于这个特定的项目,我遇到了以下错误: 似乎它没有识别我在DataSource上添加的配置: 我们使用的是Java 8,我们对代码有这些依赖关系: 问题是它正在为另一个项目工作(与这个项目具有相同的结构,但由于某种原因它在这里不起作用) 是否有任何遗漏或我可以找到问题并解决问题的地方?
我想更新一个条目,如下所示: 此代码向我提供了以下错误消息: lambda表达式中使用的变量应该是最终的或有效的最终的 我该如何解决这个问题?
我有一个反应应用程序开发的底漆-反应模板。它有一个管理仪表板,在仪表板侧板中有几条路由。我已经在我的index.js中设置了一个身份验证路由,当我访问每条路由时,它都运行得很好。但是当重新加载页面时,页面显示404页面找不到! 我保护“/”路径不受AUthrote的影响,这样每个以“/”开头的路径都受到保护(我在仪表板中有路由,如“/usertable”、“/users”、“/payments”等