Hibernate: @ManyToOne(fetch = FetchType.LAZY) does not work on non-primary key referenced column
我有2个表:
在
1 2 3 | @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name ="OrderShipmentCode", referencedColumnName ="ShipmentCode", insertable = false, updatable = false, nullable = false) private Shipment shipment; |
当我得到
对于其他表,如果引用的列是主键,则结果与预期的一样(使用延迟加载)。 就我而言,
你能告诉我如何实现这个目标吗?
编辑:
查询代码如下:
1 2 | Criteria criteria = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Order.class); List result = criteria.list(); |
SQL查询是:1个用于
使用shipmentCode将其添加到您的实体字段,并设置您的关联代码,然后将其分
1 2 3 4 5 6 | @Column(name ="shipmentCode") private Long shipmentCode; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name ="OrderShipmentCode", referencedColumnName ="shipmentCode", insertable = false, updatable = false, nullable = false) private Shipment shipment; |
如果您使用Lazy-init进行实体提取而没有包含相关值的fild,那么当您尝试提取惰性实体Hibernate时将找不到任何值,因为它没有相关值
问题是由HHH-13024问题引起的。
本着OSS的真正精神,您可能想调查问题并发送带有修复建议的请求请求。 这是解决问题的最快方法。
您可以在订单的装运字段上使用
试试这个:
1 2 3 4 | Criteria criteria = HibernateUtil.getSessionFactory() .getCurrentSession() .createCriteria(Order.class) .setFetchMode("shipment", FetchMode.LAZY); |