实体A
有两个单向和惰性的一对一关系B
(即没有反向关系)。
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "first_b_id")
private B firstB;
@OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL, optional = false)
@JoinColumn(name = "second_b_id")
private B secondB;
延迟加载工作正常。但是如果我调用
myA.getSecondB()
SQL 日志显示 Hibernate 发出类似的问题
select * from B where id in (value1, value2)
因此,关系被懒惰地处理,但它们都是一次加载的。对此有何解释和解决方法?
哦,您可能会问,为什么这如此重要……嗯,B
实体是 LOB。一个是5+MB的原版,另一个是200KB的“预览版”。当然,如果绝对必要,我只想加载原件。