过滤传递 GAE 数据存储中其他对象的 Ref<?> 的 属性 的对象
Filter objects passing a property of a Ref<?> of other object in GAE Datastore
我尝试了不同的类型并阅读了文档,但我无法弄清楚 属性 内部参考 <> 的过滤是可能的。
这是我的 类:
我的 Beer.class
@Entity
public class Beer {
@Id
private Long keyBeer;
@Load
@Index
Ref<BeerBrand> beerBrandRef;
}
这是 Item.class
@Entity
public class Item {
@Index
@Load
Ref<Beer> beerRef;
..Fields
}
我想做的是按 beerBrandRef
过滤项目。例如,对于特定品牌,我需要列出所有具有 beerBrandRef
.
的商品
这是我的端点代码:
首先,我从我拥有的密钥中加载 beerBrandRef:
BeerBrand tmpBrand = ofy().load().type(BeerBrand.class)
.id(pBrandKey).now();
然后我尝试在过滤器中传递 Ref:
items = ofy().load().type(Item.class)
.filter("beerRef.beerBrandRef", tmpBrand)
.list();
可能吗?如果没有,我如何构建我的数据存储以使这种搜索工作(不一定使用 Ref<>)
Ps:这是我使用 GAE、Datastore 和 Objectify 的第一个项目,所以我有点迷茫。
感谢任何帮助。
关于查询,您可以将 Key<?>
、Key
(本机低级别 api 版本)、Ref<?>
和实际实体本身视为可互换的.您可以将这四项中的任何一项传递给您的 filter()
调用。
更新:你是对的 - 你不能在 GAE 查询中表达连接。这并不是说您不能执行联接,您只需要在自己的代码中手动执行它们——您是查询计划者。同样的规则也适用于聚合。对于简单的连接和聚合,这很好用,但当然有限制。
数据存储作为交易存储和权威的真实来源非常棒,但对于分析来说却很糟糕。我的建议是将相关的数据位复制到真正的 RDMBS 中,云 SQL 或 Postgres(其驱动程序一直在开箱即用的 GAE 上为我工作)。使用任务队列。这对我来说效果很好,提供了两全其美的优势——数据存储的无限扩展和零维护,以及 RDBMS 的灵活性。
我尝试了不同的类型并阅读了文档,但我无法弄清楚 属性 内部参考 <> 的过滤是可能的。
这是我的 类: 我的 Beer.class
@Entity
public class Beer {
@Id
private Long keyBeer;
@Load
@Index
Ref<BeerBrand> beerBrandRef;
}
这是 Item.class
@Entity
public class Item {
@Index
@Load
Ref<Beer> beerRef;
..Fields
}
我想做的是按 beerBrandRef
过滤项目。例如,对于特定品牌,我需要列出所有具有 beerBrandRef
.
这是我的端点代码:
首先,我从我拥有的密钥中加载 beerBrandRef:
BeerBrand tmpBrand = ofy().load().type(BeerBrand.class)
.id(pBrandKey).now();
然后我尝试在过滤器中传递 Ref:
items = ofy().load().type(Item.class)
.filter("beerRef.beerBrandRef", tmpBrand)
.list();
可能吗?如果没有,我如何构建我的数据存储以使这种搜索工作(不一定使用 Ref<>)
Ps:这是我使用 GAE、Datastore 和 Objectify 的第一个项目,所以我有点迷茫。
感谢任何帮助。
关于查询,您可以将 Key<?>
、Key
(本机低级别 api 版本)、Ref<?>
和实际实体本身视为可互换的.您可以将这四项中的任何一项传递给您的 filter()
调用。
更新:你是对的 - 你不能在 GAE 查询中表达连接。这并不是说您不能执行联接,您只需要在自己的代码中手动执行它们——您是查询计划者。同样的规则也适用于聚合。对于简单的连接和聚合,这很好用,但当然有限制。
数据存储作为交易存储和权威的真实来源非常棒,但对于分析来说却很糟糕。我的建议是将相关的数据位复制到真正的 RDMBS 中,云 SQL 或 Postgres(其驱动程序一直在开箱即用的 GAE 上为我工作)。使用任务队列。这对我来说效果很好,提供了两全其美的优势——数据存储的无限扩展和零维护,以及 RDBMS 的灵活性。