是否可以使用 Java 在 Google App Engine 上计算属性?

Is it possible to have a computed property on Google App Engine using Java?

我有一个 App Engine 应用程序,我想运行一个查询,根据涉及两个属性的表达式对结果进行排序。到目前为止,我想到的最好方法是创建一个 computed/calculated 属性来存储该表达式的结果。尽管我在 Python 中看到 GAE 提供了一个 ComputedProperty,这似乎正是我要找的东西,但我在 Java.

中找不到等效项

我目前也在使用 Objectify,如果有帮助的话。

有什么想法吗?

您可以创建一个涉及多个属性的索引。像这样:

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

在@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.

取消 setter 方法