检索休眠代理的 ID 何时初始化代理?
2022-09-04 03:48:01
在休眠中,当您通过加载检索实体时,如果您访问该实体的id访问器,它不会初始化代理:
Property myProp = (Property) session.load(Property.class, myId);
myProp.getId(); // Doesn't load the proxy
myProp.getDescription(); // Loads the proxy from the database hit
但是,我不清楚加载关联代理的规则是什么。我的印象是,当您通过HQL查询或条件检索实体时,相同的规则适用。
我的代码中的每一个都有一个.声明如下:Property
Company
Company
@ManyToOne(fetch = FetchType.LAZY, optional=false)
@JoinColumn(name = "company_id", nullable=false)
private Company company;
但是,在我的代码中,我当前在迭代时获得N + 1选择,因为当我调用时正在加载。Properties
Company
Company.getId()
在 和 对象中,id 字段都是一个用 .Company
Property
@Id
为了防止实体的加载,我是否遗漏了其他一些注意事项?Company