2012-04-15 60 views
0

我见过很多示例,但似乎没有一个适用于我的问题。我在GAE(Java)中使用JDO。我没有找到任何错误消息。我只是没有得到结果,当我知道应该有或者结果匹配具有dispatchId的空List的对象时。任何帮助将不胜感激!无法查询列表<String> GAE中的子字段JDO

这里是我的相关类代码:

public class Department { 

    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Long id; 

... 

    // a list of codes that a department might be identified by 
    @Persistent 
    private List<String> dispatchId; 

} 

我试图找到一个部门,其dispatchId列表包含特定dispatchId代码。我的Java servlet代码是:

String dispatchId = "1353000"; // may contain letters and/or numbers 
Query q = pm.newQuery(Department.class, ":dispatchId.contains(dispatchId)"); 
@SuppressWarnings("unchecked") 
List<Department> depts = (List<Department>) q.execute(dispatchId); 

在GAE数据存储浏览器(住在GAE)为我的测试部门dispatchId场看起来像这样(的情况下,这会有所帮助):

[u'1353000' , u'0566940' ,u'0566936' ,u'1368496' ]再次

感谢您的任何输入...约翰

回答

3

你好你还在寻找答案?

这里是它的一个解决方案:

String dispatchId = "someId"; 
Query query = pm.newQuery(Department.class); 
query.setFilter("dispatchId == '"+ dispatchId + "'"); 
List<Department> depts = (List<Department>) query.execute(); 

在这里,您将需要一个单引号包围参数。