У меня есть объект Hibernate Parent, который соединен с другим: Child. В базе данных у меня есть столбец parent.child_id, который имеет ограничение внешнего ключа на child.id. Предполагая, что я лениво загружаю, когда я загружаю экземпляр Parent, я ожидаю, что смогу получить доступ к parent.getChild().getId() без поиска в таблице Child.
Я ожидал, что прокси, возвращаемый parent.getChild(), сможет выполнить запрос Child.getId(), поскольку он уже загрузил дочерний идентификатор из столбца parent.child_id. Однако я вижу дополнительный запрос в таблице Child.
Почему этот дополнительный запрос необходим, и как я могу его избежать? В этом случае меня интересует только идентификатор внешнего ключа и не хочу загружать всю строку.
Классы:
class Parent {
@Id @Column(name = "id", unique = true, nullable = false)
private Integer id;
@ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "child_id")
private Child child;
}
class Child {
@Id @Column(name = "id", unique = true, nullable = false)
private Integer id;
@Column(name = "name")
private String name;
}
Таблицы:
CREATE TABLE child (
id int PRIMARY KEY,
name varchar(10)
);
CREATE TABLE parent (
id int PRIMARY KEY,
child_id int REFERENCES (child.id)
);