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.