4

これが私の問題です。ネストの深さが3になるまで、さまざまなエンティティが他のエンティティにリンクされています。すべてのオブジェクトのすべての外部フィールドに注釈が付けられています。

@DatabaseField(foreign = true, foreignAutoRefresh = true)

しかし、ネストの深さが2になるまで、実際のautoRefreshed異物を取得します。

たとえば、Aエンティティをクエリしてから、次のようにします。

A.getB().getC().getD()

エンティティBとCIにはすでにすべてのフィールドがありますが、エンティティDIにはIDのみがフェッチされているため、すべてのDフィールドをフェッチするにはdao.refresh()メソッドを呼び出す必要があります。制限ですか?ドキュメントにそれについて何も見つかりません。

4

2 に答える 2

5

編集:

そのため、より優れた単体テストをいくつか作成し、これをさらに調べたところ、これはバグであることが判明しました。 ORMLiteは、注釈のmaxForeignAutoRefreshLevel設定を正しく処理していませんでした。@DatabaseField現在(回答を見てわかったように)、オブジェクトのフィールドとオブジェクトのフィールドにも and を追加する必要がforeignAutoRefresh = trueありmaxForeignAutoRefreshLevel = 3ます。それはそれを修正する必要があります。CBDC

次のバグ レポートを作成しました。

https://sourceforge.net/tracker/?func=detail&aid=3530801&group_id=297653&atid=1255989

トランクの問題を修正し、バージョン 4.41 を公開するプロセスを開始しました。前回のリリースからしばらく経ちましたが、これは最高の時期です。

于 2012-05-29T15:22:05.347 に答える
3

maxForeignAutoRefreshLevel = 3C エンティティに注釈属性を追加して問題を解決したところ、D が更新されるようになりました。

奇妙なことに、A、B、D のいずれにも maxForeignAutoRefreshLevel を設定する必要はありませんでした。

もう 1 つの詳細は、C エンティティのレベルを 2 に設定すると、D が更新されなくなることです。maxForeignAutoRefreshLevel = 3私の場合は、C エンティティから「開始」エンティティに取得が適用されるようです。

于 2012-05-30T09:36:07.577 に答える