我有一个app引擎应用程序,我想运行一个查询,根据涉及两个属性的表达式对结果进行排序。到目前为止,我想到的最好方法是创建一个计算/计算属性来存储该表达式的结果。虽然我看到Python中的GAE提供了ComputedProperty,这似乎正是我正在寻找的,但我无法在Java中找到它。
我目前也在使用Objectify,如果有帮助的话。
有什么想法吗?
答案 0 :(得分:3)
在@OnSave方法中计算您的值:
@Entity
public class YourEntity {
@Id Long id;
String foo;
String bar;
@Index String computed;
@OnSave void computeComputed() {
computed = // synthesize from foo and bar
}
}
这就是NDB的ComputedProperty实际上做的事情。 Java并没有真正匹配该语法的方法,我不确定NDB的方法是否更优雅。只需取消computed
。
答案 1 :(得分:0)
您可以创建涉及多个属性的索引。像这样:
class X{
@Indexed public String a;
@Indexed public String b;
}
<datastore-index kind="X" ancestor="false">
<property name="a" direction="asc" />
<property name="b" direction="asc" />
</datastore-index>
在此处详细了解:https://cloud.google.com/appengine/docs/java/config/indexconfig