休眠:@ManyToOne(fetch = FetchType.LAZY)不适用于非主键引用的列
2022-09-01 17:55:12
我有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;
当我得到的列表时,也加载了(我看到许多单独的SELECT查询)。但是我希望延迟加载,而不是与 一起获取。Order
Shipment
Shipment
Order
对于其他表,如果引用的列是主键,则结果符合预期(使用延迟加载)。在我的情况下,不是表的主键,并且休眠不使用延迟加载。ShipmentCode
Shipment
你能告诉我如何实现这个目标吗?
编辑:查询代码如下:
Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class);
List result = criteria.list();
SQL 查询包括:1 个用于表的 SELECT 语句和一堆用于Order
Shipment