0

プロジェクトのデータベースに次の問題があり、何が原因かわかりません。

次のクラス階層があります。

クラス A - クラス B の埋め込みインスタンスがあります クラス B - クラス C の 2 つの埋め込みインスタンスがあります (そのうちの 1 つのフィールドの名前を変更しました)。クラス C - 単純なフィールドのみがあります。

永続化マネージャーを使用してデータベースからオブジェクトをフェッチする場合、一部のフィールドは遅延フェッチされる可能性があるため、ゲッターを使用してそれらにアクセスする必要があることを知っています。私はすでにそれを行っており、他のすべてのケースで機能します。ただし、この場合、クラス A をフェッチすると、クラス B は正しくフェッチされますが、クラス C (クラス B の両方のインスタンス) は null であり、永続化マネージャーがまだ開いている間にそれらにアクセスしようとしても、それらは null のままです。また、単純なフィールドを B に追加すると、それらもヌルに変わるようです。これにより、これらのインスタンスは単に保存されていないと思います。

ここで何が問題なのですか?私は本当に迷っています。

4

2 に答える 2

0

null値を保存した可能性はありますか? ほとんどの ORM ツールには、null である埋め込みオブジェクトと、フィールドとして null 値のみを持つ非 null である埋め込みオブジェクトを区別する方法がありません。たとえば、hibernate は埋め込みオブジェクトを null と解釈します。たとえば、この問題を回避するためにダミー フィールドを保存できます。または、persistence-provider にデフォルトの動作をオーバーライドできる注釈が含まれている可能性があります。

于 2013-04-28T18:32:05.440 に答える