2013-08-10 2 views
0

На моей стороне клиента код вроде этого:GWT RequestFactory не может обновить объект графа

@ProxyFor(...) 
public interface AProxy 
{ 
    BProxy getChild(); 
    void setChild(BPorxy child); 
} 

RequestContext ctx=... 
AProxy parent=... 
AProxy a=ctx.edit(parent); 
a.getChild().setContent("new content");//update content 
ctx.save(a).fire(); 

из браузера отладки консоли я могу увидеть запрос отправляется на сервер с обновленным новым содержанием, но с сервера стороны по save(A a), содержание дочернего элемента b совпадает с предыдущим (никогда не менялось), но отражается другое обновление в a.

И я использую локатор на стороне сервера. Нет проблем при создании графа сущности, просто не может быть обновлено.

Кто-нибудь прояснил, в чем проблема? Спасибо

ответ

0

Должно быть, у вас есть 2 разных B экземпляров для «того же» объекта и/или setChild делает копию его аргумента.

Установите соответствующие контрольные точки в локаторы и сеттеры для отладки это (обратите внимание на объект ид)

+0

Благодаря Томас, я проверил мой 'B' прокси настроен правильно. Я забыл упомянуть, что мой «BProxy» - это «EntityProxy», а не «ValueProxy», интересно, поддерживает ли GWT обновление графа объектов EntityProxy одновременно? – Mike

+0

Вероятно, это зависит от того, как настроен уровень персистентности. Как выглядит метод 'save()' на сервере? Думаю, это просто называет 'em.perrist (a);'? Если вы используете 'JPA2', вы можете указать правила' cascade' (т. Е. Merge, persist и т. Д.). –