2015-12-18 4 views
1

У меня возникла проблема с извлечением данных из хранилища данных.Datastore Filter не работает в Google App Engine с java

Вот образец Субъекта хранится в хранилище данных: enter image description here

Я использую GAE с Java, и мне удалось сохранить данные в хранилище данных, но теперь мне нужно получить накопленные данные используя DatastoreService() и Filter().

Проблема в том, что даже когда я ввожу правильные значения в предложение WHERE, данных нет!

DatastoreService dataStore = DatastoreServiceFactory.getDatastoreService(); 
Filter usernameFilter = new FilterPredicate("Name", FilterOperator.EQUAL, "moha"); 

Query q = new Query("User").setFilter(usernameFilter); 
PreparedQuery pq = dataStore.prepare(q); 

pq.countEntities() //returns 0 always 

Я даже пытался не использовать онлайн "запрос по GQL" и до сих пор нет данных:

select * from User where Name = 'moha' 

Вот код объекта:

@Entity 
public class User { 
    @Id private String username; 
    private String password; 

    public String getUsername() { 
     return username; 
    } 
    public void setUsername(String username) { 
     this.username = username; 
    } 
    public String getPassword() { 
     return password; 
    } 
    public void setPassword(String password) { 
     this.password = password; 
    } 

} 

Что я должен делать?

ответ

0

Идентификатор/имя, которое вы видите в средстве просмотра хранилища данных, находится в Ключ и не является свойством объекта, такого как «Имя».

Вы должны указать модель и как создать объект.

Ваш выделенный запрос будет для ключ нет.

Простейший способ доказать это - получить энриту по его ключу, который вы можете видеть выше.

+0

Я добавил код сущности. –

+0

Итак, вы можете видеть из своего кода, что вы не определяете свойство под названием «Имя», вы вводите в заблуждение свойства с элементами ключа –

+0

Так что это не поможет, когда я использую «имя пользователя», хотя? –