2014-12-04 39 views
0

我有一個名爲'標記'的屬性值列表。我試圖過濾一種實體谷歌應用程序引擎查詢與字符串列表

這是我試過的。

List<String> tokens = getTokensFrom(invitations); 
PersistenceManager pm = this.dataStoreService.getObjectDBConnection(); 
Query query = pm.newQuery(Invitations.class); 
query.setFilter("tokens.contains(token)"); 
query.declareVariables(List.class.getName() + " tokens"); 
List<Invitations> invites = (List<Invitations>) query.execute(tokens); 

但我收到以下錯誤消息。

Problem with query <SELECT FROM com.mypackage.shared.domainobjects.Invitations WHERE tokens.contains(token) VARIABLES java.util.List tokens>: Unsupported method <contains> while parsing expression: InvokeExpression{[VariableExpression{tokens}].contains(PrimaryExpression{token})} 
com.google.appengine.datanucleus.query.DatastoreQuery$UnsupportedDatastoreFeatureException: Problem with query <SELECT FROM com.testbudha.shared.domainobjects.PublishedExam WHERE tokens.contains(token) VARIABLES java.util.Collection tokens>: Unsupported method <contains> while parsing expression: InvokeExpression{[VariableExpression{tokens}].contains(PrimaryExpression{token})} 
    at com.google.appengine.datanucleus.query.DatastoreQuery.newUnsupportedQueryMethodException(DatastoreQuery.java:993) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.handleContainsOperation(DatastoreQuery.java:971) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.addExpression(DatastoreQuery.java:830) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.addFilters(DatastoreQuery.java:739) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.compile(DatastoreQuery.java:248) 
    at com.google.appengine.datanucleus.query.JDOQLQuery.performExecute(JDOQLQuery.java:158) 
    at org.datanucleus.store.query.Query.executeQuery(Query.java:1789) 
    at org.datanucleus.store.query.Query.executeWithArray(Query.java:1666) 
    at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:243) 

我以前也有類似的問題,但它的作品,因爲過濾條件是倒過來即this.token.contains(標記),其中「令牌」是實體的一部分,是字符串類型的List 。但我不知道爲什麼這不起作用。有人可以幫幫我嗎?

回答

1

您聲明瞭一些名爲「令牌」的變量,但它傳入了一個參數(可能是您想要作爲令牌變量的值)。變量不是一個參數,它們是不同的。要麼使用顯式參數,要麼使用隱式參數(使用:前綴),因爲任何體面的JDO文檔都會告訴您

相關問題