【问题标题】:Objectify check if collection contains a value对象化检查集合是否包含值
【发布时间】:2014-08-15 00:08:24
【问题描述】:

我设置了一些定义为Enum 的值。现在我想编写一个查询,它返回在其集合中具有特定Enum 值的实体的数量。我已经尝试如下,但它不起作用(返回空的实体列表)。

public InfoCount getInfoCount(@Named("info") InfoType type) {
   ofy().load()
        .type(InfoRecord.class)
        .filter("infoTypes", type)
        .count()
}

infoTypes 被声明为Set<InfoType>

使用in 检查集合中是否存在值很简单,但如何以另一种方式检查它 - 集合是否包含值(或值集)?

【问题讨论】:

  • 检查字段上是否有@Index。
  • @Ashish 工作正常。我在infoTypes 集上没有@Index 注释。您能否将其发布为答案,以便我投票并接受它?
  • 谢谢汤姆。发布带有详细信息的答案,以便任何查看它的人都可以得到完整的图片。
  • 我可以检查一个集合是否包含一个 Key> 吗?对我不起作用,可能是关键问题。我有一个包含 Key> 集合的实体。我想查询在其集合中具有特定 Key> 的实体。
  • @vandus 使用过滤器myEntities = {{ MyEntity instance }} 查询myEntities = {{ MyEntity instance }} 对我有用。不确定是否要改用 Key。

标签: google-app-engine enums google-cloud-datastore objectify


【解决方案1】:

只能通过索引文件查询数据存储。仅通过传递字段名称和值(您执行此操作的方式)即可支持对多值属性的相等查询,但必须对字段进行索引。 Objectify 对枚举有非常直观的支持,所以这不应该是问题。 Objectify 中的索引是使用字段上的@Index 完成的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-04
    • 2022-11-09
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 2017-05-16
    • 2017-07-20
    相关资源
    最近更新 更多