【问题标题】:Trouble querying List<String> child field in GAE JDO在 GAE JDO 中查询 List<String> 子字段时遇到问题
【发布时间】:2012-04-15 17:34:43
【问题描述】:

我见过很多例子,但似乎没有一个适合我的问题。我在 GAE (Java) 中使用 JDO。我没有收到任何错误消息。当我知道应该有结果时,我只是没有得到结果,否则结果与 dispatchId 的空列表匹配对象。任何帮助将不胜感激!

这是我的相关课程代码:

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']

再次感谢您的任何意见...约翰

【问题讨论】:

    标签: google-app-engine google-cloud-datastore jdoql


    【解决方案1】:

    您好,您还在寻找答案吗?

    这是一个解决方案:

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

    这里你需要一个单引号将参数括起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多