У меня есть приложения GWT, которые содержат продукты и экспертов, и один продукт может иметь несколько экспертов (отношение OneToMany). У меня возникли проблемы со смешиванием и объединением запросов с использованием двух связанных объектов:
ProductProxy выглядит так:
@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();
}
У меня есть диалоговое окно, которое может редактировать продукт, поэтому оно:
ProductProxy selectedProduct; // This comes from a function that delivered all products
productRequest = MyAplication.getRequestFactory().productRequest();
this.product = productRequest.edit(selectedProduct);
При редактировании товара вы также можете добавить к этому товару экспертов:
@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, который появляется для него. В этом диалоговом окне я пытаюсь создать эксперта с продуктом, который редактируется перед передачей в качестве параметра:
expertRequest = MyApplication.getRequestFactory().expertRequest();
ExpertProxy expert = expertRequest.create(ExpertProxy.class);
expert.setProduct(product); // product comes from the productRequest code
Если я попытаюсь это сделать, я получу ошибку при выполнении setProduct, потому что запрос от productRequest смешивается с запросом от expertRequest.
Каков наилучший способ исправить это? Могу ли я добавить эксперта через исходный productRequest? Должен ли я получить идентификатор продукта и использовать его только в своем экспертном запросе? Или я должен добавить определенные функции сервера, чтобы добавить эксперта к продукту? Или есть лучшие варианты?