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

时间:2015-01-08 15:29:57

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

我有一个app引擎应用程序,我想运行一个查询,根据涉及两个属性的表达式对结果进行排序。到目前为止,我想到的最好方法是创建一个计算/计算属性来存储该表达式的结果。虽然我看到Python中的GAE提供了ComputedProperty,这似乎正是我正在寻找的,但我无法在Java中找到它。

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

有什么想法吗?

2 个答案:

答案 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

的setter方法

答案 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