RequestFactory не заполняет все поля моего прокси-сервера

Не могли бы вы рассказать мне, как я могу заставить RequestFactory заполнять поля моего прокси-сервера объекта, которые также являются прокси-серверами объекта?

Вот родительский прокси

@ProxyFor(value = Organization.class, locator = PojoLocator.class)
public interface OrganizationProxy extends EntityProxy
{
    public String getName();
    public void setName(String name);
    public String getAddress();
    public void setAddress(String address);
    public PersonProxy getContactPerson();
    public void setContactPerson(PersonProxy contactPerson);
}

как вы можете видеть, он содержит другой прокси в качестве поля. Вот как выглядит PersonProxy

@ProxyFor(value = Person.class, locator = PojoLocator.class)
public interface PersonProxy extends EntityProxy
{
    public String getName();
    public void setName(String name);
    public String getPhoneNumber();
    public void setPhoneNumber(String phoneNumber);
    public String getEmail();
    public void setEmail(String email);
    public OrganizationProxy getOrganization();
    public void setOrganization(OrganizationProxy organization);
}

В моем интерфейсе RequestContext у меня есть метод Request<OrganizationProxy> findOrganizationById(long id). Класс DAO, который извлекает реальную организацию из хранилища данных, устанавливает свое поле contactPerson, но в клиенте это всегда null. На самом деле RequestFactory даже не вызывает Organization.getContactPerson().

Мой клиентский звонок выглядит так

createFactory().contextOrder().findOrganizationById(1).fire(new Receiver<OrganizationProxy>()
{
    @Override
    public void onSuccess(OrganizationProxy response)
    {
        if (response == null)
        {
            organizationProxy = orderRequestContext.create(OrganizationProxy.class);
            organizationProxy.setContactPerson(orderRequestContext.create(PersonProxy.class));
        } else
            organizationProxy = orderRequestContext.edit(response);

        // Copy the data in the object into the UI
        driver.edit(organizationProxy);
    }

    @Override
    public void onFailure(ServerFailure error)
    {
        createConfirmationDialogBox(error.getMessage()).center();
    }
});

Что мне здесь не хватает? Должен ли я сделать что-то где-то вручную? Разве RequestFactory не должен заполнять весь граф?


person expert    schedule 27.02.2012    source источник


Ответы (1)


Извините, но я нашел ответ. У меня должен быть RTFM.

При запросе к серверу RequestFactory не заполняет автоматически отношения в графе объектов. Для этого используйте метод with() в запросе и укажите имя связанного свойства в виде строки.

person expert    schedule 27.02.2012