Я изучаю проект, использующий JPA, в котором я новичок. Я столкнулся с логикой, которую я не очень хорошо понимаю. У меня есть объект с именем A
, который имеет это поле/столбец:
@Column(name = "COD_UOP_COO")
private String codUopCoo;
то у меня есть в том же объекте:
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "COD_UOP_COO", referencedColumnName = "COD_UOP")
@BatchFetch(value = BatchFetchType.JOIN)
private B b;
Насколько я понял, это означает, что поле b
извлекается путем объединения таблиц A
и B
по полям, указанным в аннотации JoinColumn
, верно? Но как в этом случае работает соединение? Получает ли JPA объект в правой части предложения соединения?
Затем у меня есть такой именованный запрос:
"select a from A a where (a.b.bfield = :parameter)"
Что это значит? Почему они проверяют равенство в поле объекта B
? В моей таблице A
у меня нет столбца, который является внешним ключом с B
. И поле b
не является столбцом в таблице A
. Итак, какое значение столбца A
я проверяю? Мне не хватает ссылки со структурой базы данных.