1

このコードでは、GWTRequestFactoryを使用してユーザー名とパスワードでユーザーをフェッチします

  userContextProvider.get().getUser(userName, password).with(extraData).
    fire(new Receiver<User>() {
        @Override
        public void onSuccess (User user) {
        //Do something  
        @Override
        public void onFailure(ServerFailure error) {
          //Error
        }
    });

ユーザーは1つまたは複数のグループを持つことができるので、通常、extraDataには

String [] extraData = {groups};

私のDAOでは、このようにユーザーをフェッチします

   Criteria c = session.createCriteria(User.class);
   c.add(Restrictions.eq("user", username));
   c.add(Restrictions.eq("password", password));            
   utilisateur =  (Utilisateur) c.uniqueResult();

また、ユーザーモデルでは、グループコレクションはレイジーに設定されています

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "users")
    public List<Group> getGroups() {
        return this.groups;
    }

しかし、Hibernate Logには、2つのクエリが表示されます。1つはユーザー(大丈夫です)用で、もう1つはグループ用です。

私の質問は:withRequestFactoryでHibernateの遅延読み込みをオーバーライドするのは正常ですか?そしてそれを回避する方法は?

4

1 に答える 1

3

何が起こっているのか少し考えてみてください。

1つのリクエストで、グループを含むユーザーエンティティを要求しています。そのため、サーバーはユーザーとグループを準備して、GWTクライアントアプリに送り返します。

クライアント側で遅延フェッチが必要な場合は、ユーザーを要求し、必要に応じて、別の要求として(別のRequestContextインスタンス、、Receiverおよびを呼び出してfire())そのグループを要求します。

于 2012-09-18T15:51:09.233 に答える