使用spring boot更新用户数据

tquggr8v  于 2021-07-23  发布在  Java
关注(0)|答案(0)|浏览(309)

我想用SpringBoot更新用户的数据。我只想改变名字,姓氏和尼克-没有密码。我得到的是当前登录用户,这是我的函数在服务类中的样子:

public User updateUser(User user) {
    User currentUser = getCurrentUser();
    currentUser.setNick(user.getNick());
    currentUser.setLastName(user.getLastName());
    currentUser.setFirstName(user.getFirstName());
    return userRepository.save(currentUser);
}

我的控制器是这样的:

@PatchMapping("/updateUser")
@PreAuthorize("isAuthenticated()")
public UserDto updateUser(@RequestBody UserDto userDto) {
    return userMapper.toDto(userService.updateUser(userMapper.toDao(userDto)));
}

当我运行我的应用程序并试图更新用户数据时,我遇到了一个错误:无法调用“java.lang.charsequence.tostring()”,因为“rawpassword”为null
我有不同的方法来更改密码,在这种情况下,我只想更改3个字段,而不是密码。我应该如何更改更新方法?
编辑:这是我的usermapper类:

public User toDao(UserDto userDto) {

    return User.builder()
            .categories(userDto.getCategories())
            .id(UUID.randomUUID().toString())
            .avatar(userDto.getAvatar())
            .email(userDto.getEmail())
            .newsletter(userDto.isNewsletter())
            .firstName(userDto.getFirstName())
            .nick(userDto.getNick())
            .lastName(userDto.getLastName())
            .password(passwordEncoder.encode(userDto.getPassword()))
            .roles(Arrays.asList("USER"))
            .build();
}

public UserDto toDto(User user) {
    return UserDto.builder()
            .categories(user.getCategories())
            .id(user.getId())
            .avatar(user.getAvatar())
            .email(user.getEmail())
            .firstName(user.getFirstName())
            .lastName(user.getLastName())
            .newsletter(user.isNewsletter())
            .password(user.getPassword())
            .nick(user.getNick())
            .roles(user.getRoles())
            .build();
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题