У меня следующая проблема. У меня двунаправленные отношения 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);
}
}
Я пробовал другие альтернативы, но безуспешно. Как я мог решить эту проблему? Можно ли сделать эти отношения?