このグーグルについて少し見つけることができるものはたくさんありますが、私はこの問題の実行可能な解決策を完全には見つけていません。
基本的に、私が持っているのは、オンデマンドでロードしたい特定のクラスの大きなCLOBです。これを行うための素朴な方法は次のとおりです。
class MyType {
// ...
@Basic(fetch=FetchType.LAZY)
@Lob
public String getBlob() {
return blob;
}
}
ただし、これは機能しません。これは、Oracleドライバーを使用しているためと思われます。つまり、Lobオブジェクトは単純なハンドルとして扱われず、常に読み込まれます。またはそう私は私の進出から信じるように導かれました。レイジープロパティの読み込みに特別なインストルメンテーションを使用するソリューションが1つありますが、Hibernateのドキュメントでは、それを正しく機能させることにあまり関心がないように思われるため、そのルートには行きたくありません。特に、追加のコンパイルパスなどを実行する必要があります。
したがって、私が想像した次の解決策は、このオブジェクトを別のタイプに分離し、関連付けを定義することでした。残念ながら、ドキュメントには矛盾する情報が記載されていますが、共有主キーを使用したOneToOneアソシエーションでは遅延読み込みが機能しないことは明らかです。アソシエーションの片側をManyToOneとして設定しましたが、共有主キーがある場合にこれを行う方法がよくわかりません。
それで、誰かがこれについて行くための最良の方法を提案できますか?