1

私のGWT2.4.0アプリケーションでは、RequestFactoryとHibernate/JPAを使用しています。私には関係を通してAgent多くを持っている実体があります。この関連付けが読み込まれます。したがって、findサービスが呼び出されると、エージェントの管理者はロードされません。これは、ほとんどの場合、望ましい動作です。Administrators@OneToManyLAZY

ただし、withメソッドを使用して、クライアント側のコードでrequestFactoryリクエストを実行するときに、エージェントの管理者を元に戻したいことを示したいと思います。したがって、私のクライアントコードは次のようになります。

RequestContext.findAgent(agentId).with("administrstors").fire()

私のサーバーサイドサービスは次のようになります。

public Agent findAgent(Long id) {
    return getEntityManager().createQuery("SELECT a" +
            " FROM Agent" +
            " WHERE a.id=:id", Agent.class)
            .setParameter("id", id)
            .getSingleResult();
}

withメソッドを使用してリクエストを送信したかどうかを確認できるようにしたいと思います。クライアント側でが使用された場合に備えて、エージェントの管理者もロードするようにJPAクエリをカスタマイズする必要があります。サーバー側のRequestFactoryを介して行われたリクエストの詳細にアクセスする方法はありますか?

クライアントコードにエージェントの管理者が必要であることがわかっている場合、JPAクエリは次のようになります。

public Agent findAgent(Long id) {
    return getEntityManager().createQuery("SELECT a" +
            " FROM Agent a LEFT JOIN a.administrators admin" +
            " WHERE a.id=:id", Agent.class)
            .setParameter("id", id)
            .getSingleResult();
}

任意の洞察をいただければ幸いです。前もって感謝します。

4

1 に答える 1

0

残念ながらこれは不可能です。に加えて、情報を追加の引数としてメソッドに渡す必要がありますwith()

参考までに、これは 2 年前に Google Wave で議論されました (私はローカル バックアップ コピーを持っていますが、Web 上のどこにもありませんSet<String>) findAgent。 –、またはプロパティのスレッド ローカル リスト)。
ただし、このようなものは実装されていませんが、振り返ってみると、メソッドに引数として情報を明示的に渡すことは、より明示的であり、魔法が少なくなります。

于 2012-07-25T18:11:31.453 に答える