AppEngine: Запрос к хранилищу данных для столбцов с дефисом в имени

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

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

Как передать свойствоName через дефис?


person Pablo    schedule 24.12.2009    source источник
comment
Это должно работать нормально - что происходит, когда вы пытаетесь это сделать?   -  person Nick Johnson    schedule 24.12.2009
comment
Он не возвращает ни одной строки. Например, если я фильтрую по столбцу с именем field-1, это своего рода попытка вычесть 1 из каждого возвращаемого значения столбца с именем field...   -  person Pablo    schedule 26.12.2009
comment
А что произойдет, если вы выполните фильтрацию в исходном вызове Gql?   -  person raphink    schedule 28.12.2009
comment
Raphink, он возвращает ошибку :( Я не могу фильтровать по столбцу "дефис" в вызове GQL...   -  person Pablo    schedule 29.12.2009


Ответы (3)


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

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

person Kristian Damian    schedule 28.12.2009
comment
Спасибо за ваш комментарий, Кристиан, но я говорил о названии столбца в базе данных. - person Pablo; 29.12.2009

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

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

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

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

person James Polley    schedule 30.12.2009

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

person Clueless    schedule 30.12.2009
comment
Это очень плохо. Удачи в обнаружении источника вашей проблемы. - person Clueless; 01.01.2010