java - 休眠延迟加载不起作用(@JoinColumnOrFormulas)
问题描述
我有这节课
@javax.persistence.Entity
@Table(name = "OD_STOCK")
@Inheritance(strategy = InheritanceType.JOINED)
@PrimaryKeyJoinColumn(name = "OD_STOCKID")
@XmlRootElement(name = "Stock")
public class Stock extends Entity {
@ManyToOne(fetch = FetchType.LAZY)
@NotFound(action = NotFoundAction.IGNORE)
@JoinColumnsOrFormulas({@JoinColumnOrFormula(formula = @JoinFormula(value = "STOCKGROUPCODE", referencedColumnName = "GD_CODEID")),
@JoinColumnOrFormula(formula = @JoinFormula(referencedColumnName = "GD_CODETYPE", value = "'STOCKGROUP'"))})
private StockGroup stockGroup;
}
但是当我加载 Stock 时,stockGroup 总是被加载......延迟加载不起作用。
我在 SQL 日志中看到这个 SELECT 来加载 stockGroup
select
stockgroup0_.GD_CODEID as GD_CODEI2_52_0_,
stockgroup0_.GD_CODETYPE as GD_CODET1_52_0_,
stockgroup0_.DBUSERINS as DBUSERIN3_52_0_,
stockgroup0_.DBUSERUPD as DBUSERUP4_52_0_,
stockgroup0_.AU_USERIDINS as AU_USERI5_52_0_,
stockgroup0_.AU_USERIDUPD as AU_USERI6_52_0_,
stockgroup0_.INSERTDATE as INSERTDA7_52_0_,
stockgroup0_.MODIFYDATE as MODIFYDA8_52_0_,
stockgroup0_.VERSION as VERSION9_52_0_,
stockgroup0_.GD_CODE as GD_CODE10_52_0_,
stockgroup0_.ISACTIVE as ISACTIV11_52_0_,
stockgroup0_.PRINTORDER as PRINTOR12_52_0_,
stockgroup0_.XMLGD_CODE as XMLGD_C13_52_0_
from
GD_CODE stockgroup0_
where
stockgroup0_.GD_CODEID=?
and stockgroup0_.GD_CODETYPE=?
and stockgroup0_.GD_CODETYPE='STOCKGROUP'
更糟糕的是,当 OD_STOCK 中的 GD_CODEID 为 NULL 时,加载对象的 SELECT 已完成,当 SELECT 不可用时,因为 GD_CODEID 为 NULL
当 GD_CODEID 为 NULL 时,GD_CODEID 绑定到 NULL。
为什么 ?我能做些什么 ?
解决方案
推荐阅读
- r - 显示数据不是面板时每个 ID 出现的行数 (R)
- vue.js - vue-router 路由中的递归 slug
- c# - 每个类方法的通用约束不同?
- azure - 运行手动触发的管道时,什么可能导致“InternalServerError 执行请求”?
- python - 如何从 datetime python DataFrame 按“分组”小时聚合数据?
- datetime - 我的查询适用于时间戳,但日期时间出错
- html - div元素的CSS背景不起作用
- laravel - 如何在 Policy 中允许 nova 资源操作
- python - Python Panda - 将两列值连接成带有标签名称的单列
- java - 事务隔离级别 -1 不支持