Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用contains()进行JDO查询?_Java_Google App Engine_Google Cloud Datastore_Jdo_Datanucleus - Fatal编程技术网

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

Java 如何使用contains()进行JDO查询?,java,google-app-engine,google-cloud-datastore,jdo,datanucleus,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; @Pers

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

  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));
Races[]Races=新种族[]{Races.Orc,Races.Troll,};
Query=manager.newQuery(Crafter.class);
setFilter(“:raceParam.contains(race)”);
List-crafters=(List)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)
            ...
原因:java.lang.IllegalArgumentException:race:ca.forklabs.wowtradeskills.web.shared.Races不是受支持的属性类型。
位于com.google.appengine.api.datastore.DataTypeUtils.checkSupportedSingleValue(DataTypeUtils.java:184)
位于com.google.appengine.api.datastore.DataTypeUtils.checkSupportedValue(DataTypeUtils.java:149)
在com.google.appengine.api.datastore.Query$FilterPredicate.(Query.java:574)
位于com.google.appengine.api.datastore.Query.addFilter(Query.java:260)
位于org.datanucleus.store.appengine.query.DatastoreQuery.addLeftPrimaryExpression(DatastoreQuery.java:1343)
...
如何使用JDO和Google应用程序引擎进行查询

一些参考资料:


在JDOQL中包含的内容与Java中的定义相同。。。在集合(字段)上。你有一个数组。JDOQL语法遵循Java语法

我不理解你。我将列表作为参数传递给execute()方法,并对参数调用contains()。我做错了什么?啊,是的。所以,您使用的GAE版本可能不支持集合参数;我所能评论的就是JDOQLmr datanucleus的有效性,我有带有datanucleus datanucleus-api-jdo-3.1.0的GAE的最新版本,但这不起作用!有什么想法吗?甚至在弦上。