1

Web アプリ内で Spring 2 でApache OJBを使用しているときに問題が発生しています。

2 つの外部キー プロパティを持つ OJB 参照記述子を使用しています。オブジェクト A (親) とオブジェクト B (参照オブジェクト) があります。つまり、オブジェクトAに対して、オブジェクトBが存在する場合と存在しない場合があります。

オブジェクト A に対応するオブジェクト B がない場合、オブジェクト B はインスタンス化されているように見えます (Spring を介して?) とにかく。ただし、オブジェクト B のメンバーにアクセスできません。

オブジェクト B == null かどうかをテストすると、データベースに一致する値がなくても、常に false が返されます。

このオブジェクトは決して null ではないため、次のようにオブジェクトのメンバーをテストできると考えました。

if( objectb.getDocumentNumber == null) { false を返します。}

ただし、jsp で例外が発生します。

javax.servlet.jsp.el.ELException: An error occurred while getting property
"documentNumber" from an instance class
org.sample.pojo.Objectb$$EnhancerByCGLIB$$78022a2

objectB を作成するときのデバッガーでのこの例外:

com.sun.jdi.InvocationException occurred invoking method.

参照記述子は、1:0+ の関係ではなく、1:1+ の関係でなければならないと推測しています。プロパティ「auto-retrieve」を false に設定してから、PersistenceBroker.retrieveAllReferences(Object obj); を使用する必要があるかどうか疑問に思っていました。指示通りの方法。ただし、このメソッドの戻り値は「void」であるため、Spring が何らかの方法で参照クラスを作成し、設定していると推測しています。(私が抱えている同じ問題に私を戻します。)

最初に参照オブジェクトが存在するかどうかをテストする方法が必要です。そうでない場合は、この retrieveAllReferences メソッドを呼び出さないでください。ただし、方法がわかりません。

私はこれについてすべて間違っていますか?参照記述子は 1:0 の関係を許可しませんか? 私の問題の回避策はありますか?

あなたの提案は大歓迎です!

4

1 に答える 1

0

私はそれを考え出した。念のため、proxy = false に設定します。

false に設定すると、一時的な参照オブジェクトが作成されず、それで null をテストできるため、これはうまくいきます。

とにかく、ありがとう。

于 2010-04-26T22:59:25.433 に答える