В объекте USER
{
@Id
@Column(name = "id")
private String id;
@Column(name = "email")
private String email;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
private List<Address> address;
}
В USERDTO
{
@JsonProperty(access = JsonProperty.Access.READ_ONLY)
private String id;
private String email;
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
private List<Address> address;
}
IN Уровень контроллера или сервиса (используйте BeanUtils.copyProperties (user, userDto))
@RequestMapping(value = "/create-new-user", method = RequestMethod.POST)
public ResponseEntity<UserDto> createNewUserAndSendEmail(@RequestBody SignUpDto signUpDto) {
User user = new User();
UserDto userDto = new UserDto();
BeanUtils.copyProperties(signUpDto, user);
user = userService.createNewUserAndSendEmail(user);
BeanUtils.copyProperties(user, userDto);
return ResponseEntity.ok().body(userDto);
}
На уровне обслуживания
//Generate a new user and send email
public User createNewUserAndSendEmail(User user) {
if (user != null && utilService.checkUserAvailability(user.getEmail()) == false) {
user = User.initFrom(user);
userRepository.saveAndFlush(user);
String token = jwtTokenUtil.generateTokenWithPinAndEmail(user);
String emailBody = AppConstant.EMAIL_VERIFICATION_BODY + token;
emailService.sendEmail(user.getEmail(), AppConstant.EMAIL_VERIFICATION_SUBJECT, emailBody);
user.setPasswordVerifiedCode(emailBody);
return user;
} else {
throw new BadRequestException("The Request Cannot Be Fulfilled Due To Bad Syntax Exception.");
}
}
Эти 2 статических метода находятся на уровне пользователя, но на уровне вызова.
public static User initFrom(User user) {
user.setPassword(UtilService.bCryptPassword(user.getPassword()));
user.setId("USER-" + UtilService.generateFourDigitCode());
user.setStatus(AppConstant.PENDING);
user.setEmailVerifiedCode(UtilService.generateRandomString());
user.setIsEmailVerified(false);
user.setProvider(AppConstant.PROVIDER_GENERAL);
user.setRole(AppConstant.PENDING);
return user;
}
public static List<UserDto> fromUsersToUserDtoList(List<User> users) {
List<UserDto> userDtos = new ArrayList<>();
for (User user : users) {
UserDto userDto = new UserDto();
BeanUtils.copyProperties(user, userDto);
userDtos.add(userDto);
}
return userDtos;
}