Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EntitySubclass对象化查询_Java_Google App Engine_Android Studio_Google Cloud Datastore_Objectify - Fatal编程技术网

Java EntitySubclass对象化查询

Java EntitySubclass对象化查询,java,google-app-engine,android-studio,google-cloud-datastore,objectify,Java,Google App Engine,Android Studio,Google Cloud Datastore,Objectify,我正在使用Objectify 4.0b3的Google App Engine(Java),并希望有一个超类Facility,子类SportFacility和UserDefinedFacility。我希望能够通过id查询设施,从而从所有子类中获取设施,我还希望能够对每个子类执行相同的操作 @Entity public class Facility { @Id protected Long id; @Index protected String name;

我正在使用Objectify 4.0b3的Google App Engine(Java),并希望有一个超类Facility,子类SportFacilityUserDefinedFacility。我希望能够通过id查询设施,从而从所有子类中获取设施,我还希望能够对每个子类执行相同的操作

@Entity
public class Facility {

    @Id
    protected Long id;
    @Index
    protected String name;
    @Index
    protected double x_coordinate;
    @Index
    protected double y_coordinate;
    @Index
    protected String address;

    protected Facility(){}

    public Facility(String name, double x_coordinate, double y_coordinate, String address) {
        this.name = name;
        this.x_coordinate = x_coordinate;
        this.y_coordinate = y_coordinate;
        this.address = address;
}

@EntitySubclass(index=true)
public class SportFacility extends Facility{

    @Index
    private String url;

    private void SportFacility(){}

    public SportFacility(String name, double x_coordinate, double y_coordinate, String address, String url) {
        super(name, x_coordinate, y_coordinate, address);
        this.url = url;
    }
}


@EntitySubclass(index=true)
public class UserDefinedFacility extends Facility{

    @Index
    private String url;

    private void UserDefinedFacility(){}

    public UserDefinedFacility(String name, double x_coordinate, double y_coordinate, String address) {
        super(name, x_coordinate, y_coordinate, address);

    }
}
基本上,我的问题与中描述的相同,但在我的例子中,查询

Facility facility = ofy().load().type(Facility.class).id(id);
不工作,因为AndroidStudio抱怨类型应为

LoadResult<Facility> 
LoadResult
而不是设施

由于继承概念的语法似乎在Objectify版本之间经常发生变化,因此我找不到有效的解决方案,因此我非常感谢您的帮助

提前谢谢


Samuel

Android Studio是正确的;要获取实体本身,您需要:

Facility Facility=ofy().load().type(Facility.class).id(id).now()

Facility Facility=ofy().load().type(Facility.class).id(id).safe()

如果实体不存在,后者将抛出一个
NotFoundException
(我记得现在将返回
null