【发布时间】:2020-11-11 12:46:16
【问题描述】:
我创建了一个 Spring Boot 应用程序。在我正在使用 API 的应用程序中。我有一个用于创建用户的 POST API,但是每次我使用该 api 时,我都会收到以下错误
Spring boot post api - org.postgresql.util.PSQLException: ERROR: null value in column "password" violates not-null constraint
我使用 hibernate 和 PostgreSQL 作为数据库。
即使我给出数据值,我也会得到这个错误。我在互联网上搜索,但我找不到这个问题的解决方案
这是我使用的代码:
Users.java:
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@Builder(toBuilder = true)
@ToString
@Table
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int user_id;
@Column(unique = true, nullable = false)
private String username;
@Column(nullable = false)
private String password;
}
UsersRepository.java
@Repository
public interface UsersRepository extends JpaRepository<Users, Integer> {}
用户服务
@Service
@RequiredArgsConstructor
@Transactional
public class UsersService {
private final UsersRepository usersRepository;
public Users createUser(Users newUsers) {
return this.usersRepository.save(newUsers);
}
}
UsersDto
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class UsersDto {
private int user_id;
private String username;
private String password;
}
用户映射器
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface UsersMapper {
UsersDto toDto(Users users);
Users toModel(UsersDto usersDto);
}
用户控制器
@RestController
@CrossOrigin(origins = "http://localhost:4200")
@RequiredArgsConstructor
@RequestMapping("/users")
@Validated
public class UsersController {
private final UsersService usersService;
private final UsersMapper usersMapper;
@PostMapping()
@ApiOperation(value = "Create new user", httpMethod = "POST", code = 201)
@ResponseBody
public ResponseEntity<UsersDto> createUser(@RequestBody UsersDto usersDto) throws Exception {
Users users = this.usersMapper.toModel(usersDto);
Users createUsers = this.usersService.createUser(users);
return ResponseEntity.ok(this.usersMapper.toDto(createUsers));
}
}
希望有人能帮我解决这个问题
【问题讨论】:
-
能否调试并检查 this.usersMapper.toModel(usersDto) 是否真的返回了正确的用户对象?
-
UsersDto toDto(Users users);工作吗? -
@JeannotMn 我已经调试了 this.usersMapper.toModel(usersDto),它不返回用户对象。我看到用户名和密码都是空的
-
你对 usersDto 有价值吗?
-
@JeannotMn 我从 usersdto 得到的值是:Users(user_id= 0, username=null, password= null)
标签: java spring postgresql spring-boot