gpt4 book ai didi

java - objectify 中的复杂查询

转载 作者:行者123 更新时间:2023-12-01 12:12:45 24 4
gpt4 key购买 nike

考虑更复杂的实体结构,例如

class Entity {
Float valueA;
Float valueB;
List<Property> properties;
}

class Property {
Long id;
Float value;
}

我现在正在尝试找出一个索引结构来执行类似(伪sql)的查询:

select entity where valueA >= x and valueB < y and properties contains
((id = a, value >= b) and (id = c, value = d))

我面临的问题是:

  • 我无法在一个查询中放置多个不等式过滤器。
  • 如何为列表属性对象添加约束

到目前为止,我的脑海中浮现出一个想法:

我可以对所有属性使用关系索引模式。例如。创建以下实体:

class ValueA/ValueB {
@Parent
Key<Entity> parent;
@Id
Long id = 1L;
@Index
Float minValue;
}

并更改 Property 类,例如

class Property {
@Parent
Key<Entity> parent;
@Id
Long id;
@Index
Float value;
}

然后我可以对每个相关索引类进行查询,并保留符合所有条件的那些实体的父键。

这很难有效地完成,而且很容易变得非常昂贵。

还有其他我可以尝试的解决方案吗?

提前致谢!

最佳答案

我将在搜索 Api 中存储实体的非规范化副本,这允许更灵活的查询。

确保搜索 Api 的结果包含实体的 ID。

最后,使用 Objectify 执行keys() 查询以获取结果的实际实体。

关于java - objectify 中的复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27187157/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com