GAE, JDO Как запросить первичный ключ по типу Long / Long - PullRequest
0 голосов
/ 02 апреля 2012

Я определяю базовый класс, который имеет первичный ключ Long, так же, как это.

@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true")
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public class ModelBase implements Serializable {

    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Long id;

, а другие pojo расширяют ModelBase.Когда я запросил jdoql, как этот код

public List<PersonalSetting> getByIds(Long... Ids) {
    Query query = getQuery();
    query.setFilter("id ==:id");
    return (List<PersonalSetting>) query.execute(Ids);
}

, но он просто дал мне исключение.

java.lang.ClassCastException: [Ljava.lang.Long; cannot be cast to com.google.appengine.api.datastore.Key

Я обнаружил, что у класса Key есть поле "Id", но я могу 't получить доступ к нему как "id.id ==: id".Кто-нибудь может подсказать как это исправить?Большое спасибо!

1 Ответ

0 голосов
/ 02 апреля 2012

Неверный JDOQL.Если вы хотите найти элемент в коллекции, которую вы делаете ": ids.contains (id)"

Очевидно, что имеет смысл указать, какую версию плагина персистентности Googles вы используете, а затем ввести лог /StackTrace

...