0

私はトップリンクをORMツールとして使用していますが、1つの特有の問題に直面しています。エンティティをセッションに挿入していますが、次の行で同じエンティティを読み込もうとすると、それを取得できず、代わりにnullが返されます。しかし、休止状態を使用しようとすると同じ問題が発生し、正しく機能します。誰でも助けてください。

Address address = new Address();
address.setAddressId("1");
address.setPincode(1);
uow2.registerNewObject(address);
ExpressionBuilder builder = new ExpressionBuilder();
Expression expr = builder.get("addressId").equal("1");
Address address1 = (Address)uow2.readObject(Address.class, expr);

最後に、address1をnullとして取得します。同じキーでオブジェクトを挿入してから取得しようとしているのでわかりません...plzは私を助けます...

4

1 に答える 1

2

これはネイティブTopLink/EclipseLinkコードです。コミットされるまで書き出さないUnitOfWorkにアドレスを「登録」しているだけです。

UnitOfWorkからコミットされていない結果を取得する方法はいくつかあります。上記のシナリオでは、新しいオブジェクトを登録する前にuow.setShouldNewObjectsBeCached(true)を呼び出すと、readObject呼び出しでそれが検出されます。

readObject呼び出しをReadObjectQueryに変更し、クエリにconformResultsInUnitOfWorkを設定することもできます。

EclipseLink / TopLinkを使い始めたばかりの場合は、JPAAPIを使用することをお勧めします。JPAで多くのリソースを見つけることができます。次に、コードの最適化を開始するか、複雑なシナリオに取り組み始めると、EclipseLinkメーリングリストとフォーラムを使用して、EclipseLink固有の支援を受けることができます。

于 2010-07-23T13:43:19.903 に答える