Я изучаю проект, использующий 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
я проверяю? Мне не хватает ссылки со структурой базы данных.