gpt4 book ai didi

java - Hibernate:@ManyToOne(fetch = FetchType.LAZY) 不适用于非主键引用列

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:35 25 4
gpt4 key购买 nike

我有 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;

当我获得 Order 列表时,Shipment 也被加载(我看到许多单独的 SELECT 查询)。但我希望 Shipment 延迟加载,而不是与 Order 一起获取。

对于其他表,如果引用的列是主键,则结果符合预期(使用延迟加载)。在我的例子中,ShipmentCode 不是 Shipment 表的主键,Hibernate 不使用延迟加载。

你能告诉我如何实现这个目标吗?

编辑:查询代码如下:

Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class);
List result = criteria.list();

SQL 查询是:Order 表的 1 个 SELECT 语句和 Shipment 的一堆 SELECT 语句

最佳答案

Thd 问题是由 HHH-13024 issue 引起的.

本着 OSS 的真正精神,您可能想要调查问题并发送带有修复建议的合并请求。这是解决问题的最快方法。

关于java - Hibernate:@ManyToOne(fetch = FetchType.LAZY) 不适用于非主键引用列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27854768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com