Локатор объекта GWT Requestfactory не работает с Objectify, если объект имеет длинный идентификатор

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

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

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

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

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


person Mike    schedule 17.03.2012    source источник


Ответы (1)


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

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

person Thomas Broyer    schedule 17.03.2012
comment
Спасибо за быстрый ответ, я использую KeyFactory keyToString и StringToKey, когда я использую объект String ID, и он работает нормально, поэтому вы имеете в виду, что я могу продолжать использовать типизированный String локатор на стороне сервера с объектом с длинным идентификатором? я попытаюсь. - person Mike; 17.03.2012
comment
Как вы сказали, идентификатор в сущности не имеет отношения к идентификатору в локаторе, последний - просто составная вещь, мой тест пройден, и большое спасибо! - person Mike; 17.03.2012