AppEngine: запрос хранилища данных для столбцов с дефисом в имени - PullRequest
4 голосов
/ 24 декабря 2009

Я работаю над сервлетом в Google App Engine. Этот сервлет получает данные из хранилища данных GAE; все работает нормально при запросах типа "SELECT * FROM ...". Но когда я хочу отфильтровать его по определенному столбцу, он не работает, так как имя столбца имеет перенос. Это похоже на следующее:

Query query = new Query("tableName");
query.addFilter("col-name", Query.FilterOperator.EQUAL, filterValue);

Как передать свойство name с дефисом?

Ответы [ 3 ]

2 голосов
/ 31 декабря 2009

В хранилище данных AppEngine нет строк или столбцов; у него есть модели и свойства.

Определение классов данных говорит об определении ваших моделей; важно отметить, что правила Java для имен идентификаторов имеют значение, потому что каждое свойство модели в какой-то момент будет превращено в объект Java с тем же именем.

Вы сами это описали:

если я фильтрую по столбцу "поле-1", это вроде я пытался вычесть 1 из каждого возвращенного значение столбца называется полем

1 голос
/ 28 декабря 2009

java принимает только буквы и цифры со знаком доллара "$" или символом подчеркивания "_", например, легальными идентификаторами. Поэтому я считаю, что это невозможно. Также не работает в Python

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/variables.html#naming

0 голосов
/ 30 декабря 2009

Правильно ли метод addFilter заключает имя столбца в одинарные кавычки? Возможно, вы захотите попробовать добавить их самостоятельно. Можно фильтровать по тем вещам, которые не являются ключами в базе данных в GQL, так что это может ожидаться от вас.

...