Есть метод, в котором добавляется пользователь и информация о нем (это две разные таблицы, которые связаны друг с другом):
public void saveUser(UserCompositeDTO userCompositeDTO) {
var userInfo = new UserInfo();
var user = new User();
user.setAuthorities((Set<Role>) userCompositeDTO.getAuthorities());
user.setEmail(userCompositeDTO.getEmail());
user.setPassword(userCompositeDTO.getPassword());
user.setUsername(userCompositeDTO.getUsername());
user.setEnabled(true);
user.setOrganization(userCompositeDTO.getOrganization());
userRepository.save(user);
User currentUser = userRepository.findUserByUsername(user.getUsername());
userInfo.setFirstName(userCompositeDTO.getFirstName());
userInfo.setMiddleName(userCompositeDTO.getMiddleName());
userInfo.setLastName(userCompositeDTO.getLastName());
userInfo.setBirthDate(userCompositeDTO.getBirthDate());
userInfo.setPhoneNumber(userCompositeDTO.getPhoneNumber());
userInfo.setUser(currentUser);
userInfoRepository.save(userInfo);
}
Связь в User:
@OneToOne(mappedBy = "user", cascade = {CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
private UserInfo userInfo;
Связь в UserInfo:
@OneToOne(optional = false)
@JoinColumn(name = "user_id", insertable = false, updatable = false, unique = true)
private User user;
При сохранении пользователя информация в таблицу User кладется верно, а в UserInfo кладется все, кроме поля user_id. Намеренно стал искать уже сохраненного пользователя по юзернейму, чтобы положить его в UserInfo, но даже это не помогло. Пожалуйста, подскажите, в чем я ошибся?