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