В моем проекте у меня GWT EntityProxy
упрощен следующим образом:
@ProxyFor(value = Item.class, locator = ItemService.class)
public interface ItemProxy extends EntityProxy
{
String getName();
// other getters and setters here
}
с соответствующей реализацией сущности, которая является простым аннотированным бином сущности JPA.
Я такжеимеет контекст запроса:
@Service(value = ItemService.class, locator = InjectingServiceLocator.class)
public interface ItemRequestContext extends RequestContext
{
Request<List<ItemProxy>> findItems();
}
и соответствующие реализации службы и локатора:
public class ItemService extends Locator<Item, Long>
{
@Override
public Item find(Class<? extends Item> clazz, Long id)
{
return getItemFromJpa(id);
}
public List<Item> findItems()
{
return getAllItemsFromJpa();
}
// Remaining Locator and JPA methods skipped
}
Когда я вызываю метод findItems
в контексте запроса GWT с точки зрения RPC, все кажетсяработать должным образом, и я получаю список элементов в методе обратного вызова для работы с клиентом.
Но с точки зрения персистентности реализация не работает должным образом: на стороне сервера метод findItems
Вызванный, как и ожидалось, забирает мои вещи из персистентности и возвращает их.Затем для каждого отдельного элемента метод find
вызывается с идентификатором элемента и, конечно, извлекает элементы снова из персистентности один за другим.
Что заставляет контекст фабрики запросов GWT выполнять эти бесполезные вызовы и как можноЯ мешаю это делать?