GWT Requestfactory локатор сущностей не работает с Objectify, когда сущность имеет длинный идентификатор

Мое приложение GWT+GAE использует локатор сущностей Requestfactroy, и на стороне сервера я использую Objectify, он хорошо работает, когда мой тип идентификатора сущности - String, теперь я хочу изменить на Long id и застрял: с помощью подписи локатора я не могу найти лицо:

 @Override
    public T find( Class<? extends T> clazz, Long id )
    {
    }

Поскольку для Objectify требуется ключ @Parent, включенный для выборки дочерних объектов (HRD), и из вышеприведенного метода мы не можем получить родительский объект. Я нашел эту тему на форуме GWT: здесь

Однако этот поток, похоже, не дал никаких конструктивных предложений (в конце концов он прибегает к String ID Entity для решения).

Большое спасибо.

1 ответ

Решение

Проблема в том, что длинного идентификатора недостаточно для идентификации вашего объекта. Как вы говорите, вам также нужен его родитель, поэтому идентификатор на самом деле является составным идентификатором: родительским объектом и идентификатором ребенка.

Кстати, в чем проблема с использованием keyToString или подобное здесь? (как указано в теме, на которую вы ссылаетесь)
Идентификатор от Locator используется только на стороне сервера и только локатором (и сериализуется как есть для передачи туда и обратно к клиенту и обратно; но на стороне клиента это непрозрачные вещи, которые вам даже не дают доступ).

Другие вопросы по тегам