Есть 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.