Двунаправленное отношение OneToMany не вставляет внешний ключ в дочернюю сущность - PullRequest
0 голосов
/ 22 марта 2020

У меня следующая проблема. У меня двунаправленные отношения OneToMany. Когда я пытаюсь вставить объект пользователя, адрес также добавляется, но без внешнего ключа.

Модель пользователя

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "users")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING, length = 1)
public abstract class User extends AuditModel {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "user_generator")
    @SequenceGenerator(name = "user_generator", sequenceName = "users_id_seq", initialValue = 1, allocationSize = 1)
    private Long id;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<Address> address;
}

Модель адреса

@Entity
@Getter
@Setter
@Table(name = "adresses")
public class Address implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "address_generator")
    @SequenceGenerator(name = "address_generator", sequenceName = "adresses_id_seq", initialValue = 1, allocationSize = 1)
    private Long id;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;
}

Пользователь Служба (

@Service
public class UserService{

    @Autowired
    priate UserRepository userRepository;

    public UserDTO createUser(UserDTO userDTO) {

        if(userDTO== null) {
            return new UserDTO ();
        }

        if(userDTO.getId() != null) {
            throw new OperationNotAllowedException("Method not allowed.");
        }

        User user = DozerHelper.parseObject(userDTO, User.class);

        userRepository.save(user);
        return DozerHelper.parseObject(user, UserDTO.class);
    }
}

Я пробовал другие альтернативы, но безуспешно. Как я мог решить эту проблему? Можно ли сделать эти отношения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...