エンティティA
には、2 つの単方向で遅延した 1 対 1 の関係が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 です。1 つは 5 MB 以上のオリジナルで、もう 1 つは 200 KB の「プレビュー」です。もちろん、絶対に必要な場合にのみオリジナルをロードしたいと思います。