между таблицами у меня связь один ко многим, использую аннотацию @JoinColumn, насколько понимаю при этой аннотации просто добавляется дополнительный столбик с идентификатором к одной из таблиц, но у меня создается дополнительная промежуточная таблица, хотел бы спросить почему.
Первая сущность:
@Entity
@Table(name = "TRANSACTION")
public class Transaction {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private Long TRANSACTION_ID;
@ManyToOne
@JoinColumn(name = "ACCOUNT_ID")
private Account account;
Вторая сущность:
@Entity
@Table(name = "ACCOUNT")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column
private Long ACCOUNT_ID;
@OneToMany(cascade = CascadeType.ALL)
List<Transaction> transactions = new ArrayList<>();
Использование аннотации @JoinColumn нужно для того, чтобы указать какой столбец таблицы будет использоваться при установке соединения JOIN в SQL запросе при выборке данных, помещаемых в данный объект. При отношениях @OneToMany и @ManyToOne, промежуточная таблица не используется. А используются она в случае @ManyToMany отношений. Если таблица не используется, то её можно спокойно удалить или перегенерить схему базы данных с помощью hbm2ddl.auto=create.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей