Hibernate是否为同一个孩子优化了几个懒惰的一对一关系?

时间:2012-12-07 22:30:15

标签: hibernate jpa jpa-2.0

实体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“预览版”。当然,如果绝对必要,我只想加载原件。

1 个答案:

答案 0 :(得分:1)

可能是您为B类(或使用hibernate.default_batch_fetch_size配置属性的每个实体)启用了batch fetching