GAE,JDO如何通过Long / long类型查询主键

时间:2012-04-02 13:56:17

标签: google-app-engine jdo jdoql

我定义了一个具有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”字段,但我无法像“id.id ==:id”那样访问它。 有谁能告诉我如何解决它?非常感谢你!

1 个答案:

答案 0 :(得分:0)

无效的JDOQL。如果要在集合中查找元素,可以执行此操作 “:ids.contains(ID)”

显然,说明你正在使用的Googles持久性插件版本是什么,然后是log / stacktrace