@azerphoenix

Как правильно маппить 2 Entity один из которых повторяется?

Здравствуйте!
Имеются 2 Entity. User & Attachment.

@Entity
@Data
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    // ID пользователя
    private Long userId;

    // Email
    @Column(nullable = false, unique = true)
    private String userEmail;

    // Пароль
    private String userPassword;


    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
    private Collection<Role> roles;


    @JsonIgnore
    @OneToMany(mappedBy = "user")
    private List<Attachment> attachments = new ArrayList<>();

    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "avatar_id", nullable = true)
    private Attachment avatar;

    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "background_id", nullable = true)
    private Attachment background;
}


/**
 * Entity класс для загружаемых файлов
 */
@Entity
@Data
@Table(name = "attachments")
public class Attachment {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    // ID
    private Long attachId;

    // Название файла
    private String attachTitle;

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


В properties - spring.jpa.hibernate.ddl-auto=create-drop

Дело в том, что для каждого пользователя мне в БД нужно хранить 3 типа Attachments:
1) список всех загруженных им файлов на сайт
2) аватар пользователя
3) фоновое изображение

При первичном запуске приложение стартует и работает.

При повторном запуске вижу следующие исключения и приложение не стартует и нужно вручную удалять таблицы attachments & users:

CommandAcceptanceException: Error executing DDL "drop table attachments if exists" via JDBC Statement
Невозможно удалить "attachments", пока существует зависимый объект "fkgdei0jp3xgsj75jf1t30vxr70, fksh7l0d3vl8b4ywf0o8w995ocp"


Error executing DDL "drop table users if exists" via JDBC Statement
Невозможно удалить "users", пока существует зависимый объект "fkrap79tymgdjf1c5x4dla3rekl"


Error executing DDL "create table attachments"
JdbcSQLSyntaxErrorException: Таблица "attachments" уже существует


CommandAcceptanceException: Error executing DDL "create table users"
JdbcSQLSyntaxErrorException: Таблица "users" уже существует


CommandAcceptanceException: Error executing DDL "alter table users add constraint UK_33uo7vet9c79ydfuwg1w848f unique (user_email)"
JdbcSQLSyntaxErrorException: Ограничение "uk_33uo7vet9c79ydfuwg1w848f" уже существует


CommandAcceptanceException: Error executing DDL "alter table attachments add constraint FKrap79tymgdjf1c5x4dla3rekl
JdbcSQLSyntaxErrorException: Ограничение "fkrap79tymgdjf1c5x4dla3rekl" уже существует


Что делать? Как же корректно замаппить Attachments & Users с учетом задачи? Заранее благодарю за помощь.
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы