Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用JPARepository和UserService更新用户详细信息时遇到问题_Java_Spring - Fatal编程技术网

Java 使用JPARepository和UserService更新用户详细信息时遇到问题

Java 使用JPARepository和UserService更新用户详细信息时遇到问题,java,spring,Java,Spring,我有点困在我的代码中,因为我不知道如何继续实现更改用户详细信息的方法。我认为这是一个非常简单的问题,但我是java和springboot的乞丐,我已经没有办法解决它了 我有IUserService.java: public interface IUserService { User registerNewUserAccount(UserDto userDto); List<User> findAll(); Optional<User> fin

我有点困在我的代码中,因为我不知道如何继续实现更改用户详细信息的方法。我认为这是一个非常简单的问题,但我是java和springboot的乞丐,我已经没有办法解决它了

我有IUserService.java

public interface IUserService {

    User registerNewUserAccount(UserDto userDto);

    List<User> findAll();

    Optional<User> findById(Long id);

    public void delete(Long id);

    public User updateConfirmed(Long id);
}
公共接口IUserService{
用户注册Wuseraccount(UserDto UserDto);
列出findAll();
可选的findById(长id);
公共无效删除(长id);
公共用户更新已确认(长id);
}
我遇到问题的UserService.java方法:

@Override
public User updateConfirmed(Long id) {
    Optional<User> user = userRepository.findById(id); // I tried to do User user = userRepository.findById(id); but it did not work here and my IDE wanted to do Optional instead
    if (user.confirmed == true) //cannot resolve user.confirmed
    {
        user.confirmed = false; //cannot resolve user.confirmed
    }
    else {
        user.confirmed = true; //cannot resolve user.confirmed
    }
    return userRepository.save(user); //Inferred type 'S' for type parameter 'S' is not within its bound; should extend 'com.lukas.ramonas.cms.Model.User'
}
@覆盖
公共用户更新已确认(长id){
Optional user=userRepository.findById(id);//我试图执行user user=userRepository.findById(id);但它在这里不起作用,我的IDE想执行Optional
if(user.confirm==true)//无法解析user.confirm
{
user.confirm=false;//无法解析user.confirm
}
否则{
user.confirm=true;//无法解析user.confirm
}
return userRepository.save(user);//类型参数“S”的推断类型“S”不在其范围内;应扩展“com.lukas.ramonas.cms.Model.user”
}
关于如何解决这个问题有什么建议吗?谢谢

编辑解决方案

通过使用Stefan Freitag建议的修复方法,我已经修复了我的问题。我必须使用user.get(),而不是使用user。这是我对修复程序的实现:

@Override
public User updateConfirmed(Long id) {
    Optional<User> user = userRepository.findById(id);
    if (user.get().getConfirmed() == true)
    {
        user.get().setConfirmed(false);
    } else {
        user.get().setConfirmed(true);
    }
    return userRepository.save(user.get());
}
@覆盖
公共用户更新已确认(长id){
可选用户=userRepository.findById(id);
if(user.get().getconfirm()==true)
{
user.get().setconfirm(false);
}否则{
user.get().setconfirm(true);
}
返回userRepository.save(user.get());
}

用户
属于类型
可选
,而
确认
属于类型
用户
。请看一看-访问用户是可能的,例如通过可选的.get()调用。您还可以使用可选的.orelsetrow(…),因为id为的用户可能不存在。不确定是否为框架添加了所需的注释以获取存储库类。谢谢你的回复!我使用了可选的.get()并修复了我的问题。我将用我实现的解决方案更新帖子。太棒了,谢谢!