Tho*_*Lee 18 java hibernate jpa lazy-loading one-to-one
我有2张桌子:Order [OrderId(PK), OrderShipmentCode, ...]和Shipment[ShipmentId(PK), ShipmentCode, ...].
在Order课堂上,我声明shipment了如下字段:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OrderShipmentCode", referencedColumnName = "ShipmentCode", insertable = false, updatable = false, nullable = false)
private Shipment shipment;
Run Code Online (Sandbox Code Playgroud)
当我得到列表时Order,Shipment也会加载(我看到很多单独的SELECT查询).但是我希望它Shipment是懒惰的,而不是与它一起提取Order.
对于其他表,如果引用的列是主键,则结果与预期一致(使用延迟加载).在我的情况下,ShipmentCode不是Shipment表的主键,并且Hibernate不使用延迟加载.
你能告诉我如何实现这个目标吗?
编辑: 查询代码如下:
Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class);
List result = criteria.list();
Run Code Online (Sandbox Code Playgroud)
SQL查询是:1 Order表的SELECT语句和一堆SELECT语句Shipment
Thd 问题是由HHH-13024 问题引起的。
本着 OSS 的真正精神,您可能想要调查问题并发送带有修复建议的 Pull 请求。这是解决问题的最快方法。