Как правильно отобразить 2 сущности, одна из которых повторяется дважды? - PullRequest
0 голосов
/ 01 апреля 2020

Есть 2 сущности. User & Attachment.

User.class

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

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)

    private Long userId;

    @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;
}

Attachment.class

@Entity
@Data
@Table(name = "attachments")
public class Attachment {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)

    private Long attachId;

    private String attachTitle;

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


}

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

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

При начальной запуск, приложение запускается и работает. При перезапуске я вижу следующие исключения, и приложение не запускается, и вам необходимо вручную удалить таблицы вложений и пользователей:

CommandAcceptanceException: Error executing DDL "drop table attachments if exists" via JDBC Statement
Constraint .* already exists; SQL statement:

Error executing DDL "drop table users if exists" via JDBC Statement
Constraint .* already exists; SQL statement:

Error executing DDL "create table attachments"
JdbcSQLSyntaxErrorException: Table "attachments" exists 

& etc.
...