首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过RequestFactory更新多个实体

通过RequestFactory更新多个实体
EN

Stack Overflow用户
提问于 2011-10-17 09:53:00
回答 1查看 294关注 0票数 0

我有一个包含产品和专家的GWT应用程序,一个产品可以有多个专家(OneToMany关系)。我在使用两个相关实体混合和组合请求时遇到了一些问题:

ProductProxy看起来如下所示:

代码语言:javascript
复制
@ProxyFor(myapplication.server.domain.Product.class)
public interface ProductProxy extends EntityProxy {

    Long getId();

    public String getName();
    public void setName(String name);

    [...]

    EntityProxyId<ProductProxy> stableId();

    Set<ExpertProxy> getExperts();
}

我有一个可以编辑产品的对话框,所以它做的是:

代码语言:javascript
复制
ProductProxy selectedProduct; // This comes from a function that delivered all products
productRequest = MyAplication.getRequestFactory().productRequest();
this.product = productRequest.edit(selectedProduct);

在编辑产品时,还可以向该产品添加专家:

代码语言:javascript
复制
@ProxyFor(myapplication.server.domain.Expert.class)

public interface ExpertProxy extends EntityProxy {
    public Long getId();
    public void setId(Long id);

    public ProductProxy getProduct();
    public void setProduct(ProductProxy product);
    [...]
}

我有一个单独的DialogBox为它出现。在此对话框中,我尝试创建一个专家,该产品是在作为参数传递之前编辑的:

代码语言:javascript
复制
expertRequest = MyApplication.getRequestFactory().expertRequest();
ExpertProxy expert = expertRequest.create(ExpertProxy.class);
expert.setProduct(product); // product comes from the productRequest code

如果我尝试这样做,在执行setProduct时会出现一个错误,因为来自productRequest的请求与来自expertRequest的请求混合在一起。

解决这个问题的最好方法是什么?我可以通过原始的productRequest添加一个专家吗?我是否应该从产品中获得Id,并且只在我的专家请求中使用这个?还是应该添加特定的服务器功能来向产品中添加专家?还是有更好的选择?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-17 10:55:14

是的,您应该在所有的编辑/创建中使用相同的RequestContext实例。

每个RequestContext累积操作(新的代理和调用代理的setter)和调用(服务方法调用),以便在服务器上重放。所有这些都是在fire()时作为批处理发送的。因此,您的ExpoertProxy必须与添加到的ProductProxy相同的RequestContext创建。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7792051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档