GWT RequestFactory不持久附加实体

我正试图抓住新的RequestFactory API,并且非常艰难。

我的域模型包括StafferPersonOffice 。 员工有一个人和一个办公室作为领域。

当我尝试将更新保存到GWT中的Staffer实例时,在服务器端persist()调用中,我在其原始/字符串字段中看到更新,但是我没有看到附加的PersonOffice对象的更新。 以下是我如何影响GWT方面的编辑:

 private void persistStafferDetails() { CRMRequestFactory.StafferRequest stafferRequest = requestFactory.stafferRequest(); staffer = stafferRequest.edit(staffer); PersonProxy person = staffer.getPerson(); person.setFirstName(firstNameField.getText()); person.setLastName(lastNameField.getText()); staffer.setPersonalEmail(personalEmailField.getText()); staffer.getHomeLocation().setStreetAddress(addressField1.getText()); staffer.getHomeLocation().setCity(cityField.getText()); staffer.getHomeLocation().setPostalCode(postalField.getText()); staffer.getHomeLocation().setProvince(provinceDropDown.getValue(provinceDropDown.getSelectedIndex())); stafferRequest.persist().using(staffer).fire(); } 

以下是代理:

 @ProxyFor(Staffer.class) public interface StafferProxy extends EntityProxy { Long getId(); PersonProxy getPerson(); void setPerson(PersonProxy person); OfficeProxy getOffice(); void setOffice(OfficeProxy office); String getHomePhone(); void setHomePhone(String homePhone); String getCellPhone(); void setCellPhone(String cellPhone); String getPersonalEmail(); void setPersonalEmail(String personalEmail); LocationProxy getHomeLocation(); void setHomeLocation(LocationProxy homeLocation); } @ProxyFor(Person.class) public interface PersonProxy extends EntityProxy { Long getId(); void setId(Long id); String getFirstName(); void setFirstName(String firstName); String getLastName(); void setLastName(String lastName); } @ProxyFor(Office.class) public interface OfficeProxy extends EntityProxy { Long getId(); String getName(); void setName(String name); } 

我的CRMRequestFactory看起来像:

 public interface CRMRequestFactory extends RequestFactory { @Service(Staffer.class) public interface StafferRequest extends RequestContext { InstanceRequest persist(); Request<List> getAll(); Request findStaffer(Long id); } public StafferRequest stafferRequest(); @Service(Person.class) public interface PersonRequest extends RequestContext { InstanceRequest persist(); Request<List> getAll(); Request findPerson(Long id); } public PersonRequest personRequest(); @Service(Office.class) public interface OfficeRequest extends RequestContext { InstanceRequest persist(); Request<List> getAll(); Request findOffice(Long id); } public OfficeRequest officeRequest(); } 

RequestFactory不会将persist()方法视为特殊内容,因此您必须自己实现链式持久性,或者配置ORM系统为您执行此操作。 要检查的另一件事是,如果findPerson()findPerson()findOffice()方法将返回Person或Office对象的同一对象实例。 如果在传入的HTTP请求的整个生命周期中使用相同的EntityManager (或系统的等效项),那通常会处理非平凡有效负载图的“缺失更新”问题。

关于链式持久性的博客文章和问题跟踪器链接以及简短的讨论。

如果这没有帮助,您可以发布域对象的findFoo()persist()方法的示例吗?