Я изучаю сертификацию Spring Core, и я нахожу несколько сообщений о том, как использовать JPA \ Hibernate в упражнении.Как точно обрабатывать аннотацию JPA Hibernate OneToMany?
Поэтому у меня есть 2 таблицы БД с именем respectivelly T_ACCOUNT и T_ACCOUNT_BENEFICIARY.
Эти таблицы имеют следующую структуру:
create table T_ACCOUNT (ID integer identity primary key, NUMBER varchar(9), NAME varchar(50) not null, CREDIT_CARD varchar(16), unique(NUMBER));
create table T_ACCOUNT_BENEFICIARY (ID integer identity primary key, ACCOUNT_ID integer, NAME varchar(50), ALLOCATION_PERCENTAGE decimal(5,2) not null, SAVINGS decimal(8,2) not null, unique(ACCOUNT_ID, NAME));
И в T_ACCOUNT стол привязан к T_ACCOUNT_BENEFICIARY стол с один ко многим связи, это графическое представление:
И это код счет класса, карта T_ACCOUNT стола:
@Entity
@Table(name="T_ACCOUNT")
public class Account {
@Id
@GeneratedValue
@Column(name="id")
private Long entityId;
@Column(name="NUMBER")
private String number;
@Column(name="NAME")
private String name;
@OneToMany
@JoinColumn(name="ACCOUNT_ID")
private Set<Beneficiary> beneficiaries = new HashSet<Beneficiary>();
@Column(name="CREDIT_CARD")
private String creditCardNumber;
// GETTERS & SETTERS
}
Так мое сомнение связанно об этом отображении поля, обрабатывать один ко многие соотношения между T_ACCOUNT и T_ACCOUNT_BENEFICIARY таблицы:
@OneToMany
@JoinColumn(name="ACCOUNT_ID")
private Set<Beneficiary> beneficiaries = new HashSet<Beneficiary>();
Я знаю, что на БД эта взаимосвязь реализована в ACCOUNT_ID поля T_ACCOUNT_BENEFICIARY таблицы (так множественной строка T_ACCOUNT_BENEFICIARY таблиц может иметь такую же величину ACCOUNT_ID поля, и это означает, что одна строка таблицы T_ACCOUNT может быть связана с более один ряд из T_ACCOUNT_BENEFICIARY таблица).
Мои сомнения: в этом отображении поля Я не используя @column аннотацию, потому что объекты Бенефициар (что представляет собой одиночные строки T_ACCOUNT_BENEFICIARY таблицы) не представлены в виде поля (колонки) моего T_ACCOUNT Таблица. Поэтому вместо этого используется @JoinColumn (name = "ACCOUNT_ID").
Но как JPA \ Hibernated знает, что такое правильный стол? Я думаю, что он должен автоматически смотреть, как аннотируется класс Beneficiary.
Правильно ли это интерпретация, как это работает?
Tnx