Spring Security, Spring Data JPA: ошибка отправки POST-запроса

Мой DTO для регистрации пользователя:

package com.qoxx.reminders.dto;

import com.qoxx.reminders.entity.User;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

import java.util.Objects;

/**
 * DTO for {@link User}
 */

@AllArgsConstructor
@Setter
@Getter
public final class UserRegisterDto {
    private String username;
    private String password;
    private String email;
    private String telegram;

    @Override
    public boolean equals(Object obj) {
        if (obj == this) return true;
        if (obj == null || obj.getClass() != this.getClass()) return false;
        var that = (UserRegisterDto) obj;
        return Objects.equals(this.username, that.username) &&
                Objects.equals(this.password, that.password) &&
                Objects.equals(this.email, that.email) &&
                Objects.equals(this.telegram, that.telegram);
    }

    @Override
    public int hashCode() {
        return Objects.hash(username, password, email, telegram);
    }

    @Override
    public String toString() {
        return "UserRegisterDto[" +
                "username=" + username + ", " +
                "password=" + password + ", " +
                "email=" + email + ", " +
                "telegram=" + telegram + ']';
    }

}

Мой контроллер авторизации и метод регистрации пользователя:

package com.qoxx.reminders.security.controller;



import com.qoxx.reminders.dto.UserRegisterDto;
import com.qoxx.reminders.dto.UserRegisterMapper;
import com.qoxx.reminders.repository.UserRepository;
import com.qoxx.reminders.security.AuthenticationRequest;
import com.qoxx.reminders.security.CustomUserDetailsService;
import com.qoxx.reminders.security.util.JwtUtil;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class AuthController {

    private final AuthenticationManager authenticationManager;

    private final CustomUserDetailsService userDetailsService;

    private final UserRepository userRepository;

    private final PasswordEncoder passwordEncoder;

    private final UserRegisterMapper userRegisterMapper;

    private final JwtUtil jwtUtil;

    public AuthController(AuthenticationManager authenticationManager,
                          CustomUserDetailsService userDetailsService,
                          UserRepository userRepository,
                          PasswordEncoder passwordEncoder,
                          UserRegisterMapper userRegisterMapper,
                          JwtUtil jwtUtil) {
        this.authenticationManager = authenticationManager;
        this.userDetailsService = userDetailsService;
        this.userRepository = userRepository;
        this.passwordEncoder = passwordEncoder;
        this.userRegisterMapper = userRegisterMapper;
        this.jwtUtil = jwtUtil;
    }

    @PostMapping("/register")
    public String registerUser(@RequestBody UserRegisterDto user) {
        // Encode the user's password
        user.setPassword(passwordEncoder.encode(user.getPassword()));
        // Save the user to the database
        userRepository.save(userRegisterMapper.toEntity(user));

        return "User registered successfully";
    }

Мой запрос в Postman: введите сюда описание изображения Получаю вот такую ошибку:

2024-11-04T22:11:05.262+03:00 ERROR 7364 --- [reminders] [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: null value in column "password" of relation "users" violates not-null constraint
  Подробности: Failing row contains (13, qoxx, null, eblankakoito, zov_ruslan).
2024-11-04T22:11:05.266+03:00 ERROR 7364 --- [reminders] [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.dao.DataIntegrityViolationException: could not execute statement [ERROR: null value in column "password" of relation "users" violates not-null constraint
  Подробности: Failing row contains (13, qoxx, null, eblankakoito, zov_ruslan).] [insert into users (email,password,telegram,username) values (?,?,?,?) returning id]; SQL [insert into users (email,password,telegram,username) values (?,?,?,?) returning id]; constraint [password" of relation "users]] with root cause

org.postgresql.util.PSQLException: ERROR: null value in column "password" of relation "users" violates not-null constraint
  Подробности: Failing row contains (13, qoxx, null, eblankakoito, zov_ruslan).

В чём может быть проблема?


Ответы (1 шт):

Автор решения: user27756773

Проблема решена, у класса User не было сеттера на String password.

→ Ссылка