gpt4 book ai didi

java - EntitySubclass 对象化查询

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:02 27 4
gpt4 key购买 nike

我正在将 Google App Engine (Java) 与 Objectify 4.0b3 结合使用,并希望拥有一个带有子类 SportFacilityUserDefinedFacility 的父类(super class) Facility。我希望能够通过 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);

}
}

基本上我的问题与 Entity hierarchies in Objectify 4.0 中描述的相同但就我而言,查询

Facility facility = ofy().load().type(Facility.class).id(id);

不起作用,因为 AndroidStudio 提示类型应该是

LoadResult<Facility> 

而不是设施。

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

提前致谢

塞缪尔

最佳答案

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

设施设施 = ofy().load().type(Facility.class).id(id).now();

设施设施 = ofy().load().type(Facility.class).id(id).safe();

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

关于java - EntitySubclass 对象化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26899472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com