【发布时间】:2020-11-26 15:46:03
【问题描述】:
下面映射的原因是什么?
@Column(name = "inspection_platform_id")
private Long inspectionPlatformEntityId;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "inspection_platform_id", insertable = false, updatable = false)
private InspectionPlatformEntity inspectionPlatformEntity;
如果我们为整个实体指定映射并且我们可以轻松地从该实体中提取 ID,为什么还需要为外键指定映射。
我有一个建议,这是由于延迟加载,所以我们不需要获取整个实体只是为了提取它的 ID,但我也看到了这种 EAGER 提取类型的方法,所以我不明白原因
【问题讨论】:
-
这是你的代码,为什么你有它?你不需要它,这里也不是有人告诉你正在采取的方法的优点的地方,但我可以试试;我告诉我们的开发人员这样做,因为我稍后会优化模型以确保永远不会获取引用的实体,并且可能需要引用 fk 值的查询不需要无意中强制表连接使用它。我可以调用 entity.inspectionPlatformEntityId = :value 或使用 entity.inspectionPlatformEntity.someOtherAttribute 并控制我自己发出的 SQL,而不是只有 entity.inspectionPlatformEntity.id
标签: java hibernate jpa spring-data