我定义了一个具有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”那样访问它。 有谁能告诉我如何解决它?非常感谢你!
答案 0 :(得分:0)
无效的JDOQL。如果要在集合中查找元素,可以执行此操作 “:ids.contains(ID)”
显然,说明你正在使用的Googles持久性插件版本是什么,然后是log / stacktrace