Десериализация только выбора свойств сущности с использованием строки запроса JDOQL? - PullRequest
0 голосов
/ 27 апреля 2010

У меня довольно большой класс, хранящийся в хранилище данных, например, класс User с большим количеством полей (для ясности я использую java, для ясности опускаю все декорации ниже):

@PersistenceCapable
class User {

    private String username;
    private String city;
    private String state;
    private String country;
    private String favColor;
}

Для некоторых пользовательских запросов мне нужно только свойство favColor, но сейчас я делаю это:

SELECT FROM " + User.class.getName() + " WHERE username == 'bob'

, который должен десериализовать все свойства объекта. Можно ли сделать что-то вместо этого, как:

SELECT username, favColor FROM " + User.class.getName() + " WHERE username == 'bob'

и тогда в этом случае все возвращенные пользовательские экземпляры будут тратить время только на десериализацию свойств имени пользователя и favColor, а не на свойства города / штата / страны? Если так, то я предполагаю, что все остальные свойства будут нулевыми (в случае объектов) или 0 для int / long / float?

Спасибо

1 Ответ

1 голос
/ 27 апреля 2010

Нет, это невозможно с хранилищем данных App Engine; вся ваша сущность хранится в буфере протокола и должна быть десериализована вместе.

Если у вас действительно большие свойства, которые не часто нужны, вероятно, было бы неплохо поместить их в отдельную модель, хотя, если вы действительно говорите только о трех строках, это почти наверняка не стоит усилий. *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...