如何防止 Hibernate 在仅访问外键 ID 时获取已加入的实体?
我有一个休眠实体,它连接到另一个:.在数据库中,我有一列对 具有外键约束。假设我正在懒惰地加载,当我加载一个实例时,我希望能够访问而不会在表上产生查找。Parent
Child
parent.child_id
child.id
Parent
parent.getChild().getId()
child
我期望返回的代理能够满足请求,因为它已经从列中加载了子项的id。但是,我在表上看到一个附加查询。parent.getChild()
Child.getId()
parent.child_id
child
为什么需要此额外查询,如何避免?在这个例子中,我只对外键ID感兴趣,不希望加载整行。
类:
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)
);