Связь OneToOne в spring boot не сопоставляет внешний ключ связи

#java #sql-server #spring-boot #spring-data-jpa

Вопрос:

У меня есть одна единственная связь между сущностью пользователя и сущностью адреса, внешний ключ связи находится в сущности адреса.

Когда я хочу сохранить объект пользователя с соответствующим адресом в базе данных «с помощью метода сохранения из CrudRepository», он правильно добавил сущности, но без сопоставления вставленного идентификатора пользователя с полем внешнего ключа в сущности адреса.

Итак, как заставить метод сохранения из UserRepository сопоставить вставленный идентификатор пользователя с внешним ключом в адресной сущности ? ^Обратите внимание, что идентификаторы всех сущностей генерируются из БД (автоматическое увеличение)

Сущность пользователя

 public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    // another columns// 

   @OneToOne(mappedBy = "user",
            cascade = CascadeType.PERSIST,
            orphanRemoval = true,
            fetch = FetchType.LAZY)
    private Addresses addressUser;
  }
 

Адрес Организации

 public class Addresses {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

// another columns// 


 @JsonIgnore
    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumn(name = "user_id")
    private User user;
}
 

Запрос на

 @Getter
@Setter
public class RequestDto {

    @NonNull
    private String fullName;
 
    // another columns// 

    @NonNull
    private Addresses address;

 public User mapToEntity(Users user){
    
    user.setFullName(this.fullName);
   
 // another columns// 
     
   user.setAddressUser(this.address);

    }
}
 

Service method

 @Override
    @Transactional
    public User save(RequestDto requestDto) {
        Users user = new Users();
        requestDto.mapToEntity(user);
        user = userRepository.save(user);
        return user;
    }
 

Хранилище

 @Repository
public interface UserRepository extends JpaRepository<User, int> {}