1

在这段代码中,我使用 GWT RequestFactory 通过用户名和密码获取用户

  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
        }
    });

一个用户可以有一个或多个组,所以通常情况下,在我会拥有的额外数据中

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();

并且在 User 模型中,组集合设置为惰性

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

但是,在 Hibernate Log 中,我看到两个查询,一个用于用户(没关系),另一个用于 groupe

我的问题是:with在 RequestFactory 中覆盖 Hibernate 的延迟加载是否正常?以及如何解决它?

4

1 回答 1

3

想一想正在发生的事情。

您在一个请求中请求用户实体及其组。因此,服务器准备好用户和组以将它们发送回您的 GWT 客户端应用程序。

如果您想在客户端延迟获取,请询问用户,然后在需要时询问其组,作为单独的请求(使用其单独的RequestContext实例Receiver,和调用fire()

于 2012-09-18T15:51:09.233 回答