Создание зависимостей, аннотация OneToMany

120
28 апреля 2019, 13:50

между таблицами у меня связь один ко многим, использую аннотацию @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<>();

Answer 1

Использование аннотации @JoinColumn нужно для того, чтобы указать какой столбец таблицы будет использоваться при установке соединения JOIN в SQL запросе при выборке данных, помещаемых в данный объект. При отношениях @OneToMany и @ManyToOne, промежуточная таблица не используется. А используются она в случае @ManyToMany отношений. Если таблица не используется, то её можно спокойно удалить или перегенерить схему базы данных с помощью hbm2ddl.auto=create.

READ ALSO
Ввод данных через Scanner

Ввод данных через Scanner

Вот я написал код который вводит значения не в столбец а в строку:

173
Как сравнить цифровые значения enum?

Как сравнить цифровые значения enum?

Как создать enum с числами? И как сравнивать их между собой?

169
non-static method add(e) cannot be referenced from a static context

non-static method add(e) cannot be referenced from a static context

Помогите решить проблемуНе могу понять, в чем моя ошибка

308
Поулчение имени класса

Поулчение имени класса

Подскажите как можно получить имя текущего класса и сделать нижний регистр(чтобы маленькими буквами был)Подзабыл вроде getClass()

134