3
は
私はインスタンス変数として列挙型を持つクラスがあります。私は、そのクラスのインスタンスを格納および取得することができましたcontains()を使用してJDOクエリを作成するにはどうすればよいですか?
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)
...
どのようにしてはGoogle App EngineとJDOを使用してクエリで行うのですか?
いくつかの参照:
- http://gae-java-persistence.blogspot.com/2009/12/queries-with-and-in-filters.html
- http://www.datanucleus.org/products/accessplatform/jdo/jdoql_methods.html
私はあなたをフォローしていません。私はパラメータとしてexecute()メソッドにリストを渡し、自分のパラメータにcontains()を呼び出しています。私は間違って何をしていますか? – user1091789
ああ、はい。使用しているGAEのバージョンがCollectionパラメータをサポートしていない可能性があります。私がコメントできるのは、JDOQL – DataNucleus
mr datanucleusの妥当性です。私はdatanucleus datanucleus-api-jdo-3.1.0でGAEの最新バージョンを持っていますが、これは動作しません!何かご意見は?文字列上でさえも。 –