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

前端 未结 2 958
遥遥无期
遥遥无期 2021-01-07 13:46

I have an app engine application and I want to run a query that sorts the result based on a expression involving two properties. Best way I thought of doing it so far is to

相关标签:
2条回答
  • 2021-01-07 14:15

    Compute your value in an @OnSave method:

    @Entity
    public class YourEntity {
        @Id Long id;
    
        String foo;
        String bar;
    
        @Index String computed;
    
        @OnSave void computeComputed() {
            computed = // synthesize from foo and bar
        }
    }
    

    This is what NDB's ComputedProperty actually does. Java doesn't really have a way of matching that syntax, and I'm not sure NDB's approach is any more elegant. Just leave off the setter method for computed.

    0 讨论(0)
  • 2021-01-07 14:40

    You can create an index which involves multiple properties. Something like this:

    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>
    

    Read more about it here: https://cloud.google.com/appengine/docs/java/config/indexconfig

    0 讨论(0)
提交回复
热议问题