java - 如何使用 contains() 进行 JDO 查询?

标签 java google-app-engine google-cloud-datastore jdo datanucleus

我有一个带有枚举作为实例变量的类:

  public enum Races {
     Human, Elf, Orc, Troll
  }

  @PersistenceCapable(detachable="true")
  public class Crafter {
     @PrimaryKey
     @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
     private Key key;
     @Persistent
     private Races race;
  }

我已经能够存储和检索该类的实例,这不是问题。

当我想要查询所有兽人和巨魔时,问题就出现了。

  Races[] races = new Races[] { Races.Orc, Races.Troll, };

  Query query = manager.newQuery(Crafter.class);
  query.setFilter(":raceParam.contains(race)");
  List<Crafter> crafters = (List<Crafter>) query.execute(Arrays.asList(races));

这不起作用,我明白:

    Caused by: java.lang.IllegalArgumentException: race: ca.forklabs.wowtradeskills.web.shared.Races is not a supported property type.
      at com.google.appengine.api.datastore.DataTypeUtils.checkSupportedSingleValue(DataTypeUtils.java:184)
      at com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:149)
      at com.google.appengine.api.datastore.Query$FilterPredicate.<init>(Query.java:574)
      at com.google.appengine.api.datastore.Query.addFilter(Query.java:260)
      at org.datanucleus.store.appengine.query.DatastoreQuery.addLeftPrimaryExpression(DatastoreQuery.java:1343)
            ...

如何使用 JDO 和 Google App Engine 执行 IN 查询?

一些引用:

最佳答案

JDOQL 中的

contains 的定义类似于 Java ... 在集合(字段)上。你有一个数组。 JDOQL语法遵循Java语法

关于java - 如何使用 contains() 进行 JDO 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461093/

相关文章:

ruby-on-rails - 开发 RoR 应用程序后,我需要了解有关 JRuby on Rails 的哪些信息?

java - 如何查找字符串中的单词数

java - javafx/scenebuilder 文本字段或标签中的 mysql 数据

node.js - 应用引擎部署关闭, "The Node.js binary could not be verified"

google-app-engine - 如何指定服务器以从 Java 应用程序访问数据存储?

google-app-engine - 如何在 Google Datastore Viewer 中查询表名或列名中包含斜线的位置?

python - 在应用程序引擎中按实体的子级过滤查询(python)

java - spring-boot - 哪段代码实际为 springMVC 注册了调度程序 servlet?

java - 在java中将字符串转换为对象列表

google-app-engine - Google App Engine,入门