在子类中对象化 Ref
Objectify Ref in a subclass
我正在尝试通过引用获取列表。
我的 类 是这样的:
- 守护程序上的许可证 运行,
- License 可以是 LicenseCountryCondition 或带有 Ref 的另一个子类(对于 LicenseCountryCondition,参数是国家/地区的 Ref)。
许可证:
@Entity
@Cache
@Index
public class License {
@Id
Long id;
private String name;
private String startDate;
private String expDate;
private int timeStamp;
private int status;
Ref<Daemon> daemon;
private boolean inactive;
}
许可证国家条件:
@Index
@Subclass(index=true)
public class LicenseCountryCondition extends License{
Ref<Country> country;
}
如果我想找到 LicenseCountryCondition 列表,该列表在 特定的守护进程 上工作,我会这样做:
Daemon dae=ofy().load().type(Daemon.class).filter("name", "example").first().now();
List<LicenseCountryCondition>test=ofy().load().type(LicenseCountryCondition.class).filter("daemon",dae).list();
for(LicenseCountryCondition i:test){
System.out.println(i.getName());
System.out.println(i.getDaemon().getName());
}
结果还不错
但是,当我尝试获取在特定国家/地区[=47=工作的LicenseCountryCondition列表时],它不起作用:
Country ctr=ofy().load().type(Country.class).filter("name", "France").first().now();
List<LicenseCountryCondition> test=ofy().load().type(LicenseCountryCondition.class).filter("country",ctr).list();
for(LicenseCountryCondition i:test){
System.out.println(i.getName());
}
我能得到这份名单吗? (我看到了this但不是同一个问题)
感谢您的关注。
确保您对法国的查询确实 returns 一个真实的国家(不为空)。
您所写的内容没有明显的错误,但是这里发生的事情太多,数据库状态太多未指定,以至于有人无法回答这个问题。最好的办法是将创建一些实体的测试用例放在一起(因此数据库状态是已知的),然后演示您认为应该成功但仍然失败的查询。
我正在尝试通过引用获取列表。
我的 类 是这样的:
- 守护程序上的许可证 运行,
- License 可以是 LicenseCountryCondition 或带有 Ref 的另一个子类(对于 LicenseCountryCondition,参数是国家/地区的 Ref)。
许可证:
@Entity
@Cache
@Index
public class License {
@Id
Long id;
private String name;
private String startDate;
private String expDate;
private int timeStamp;
private int status;
Ref<Daemon> daemon;
private boolean inactive;
}
许可证国家条件:
@Index
@Subclass(index=true)
public class LicenseCountryCondition extends License{
Ref<Country> country;
}
如果我想找到 LicenseCountryCondition 列表,该列表在 特定的守护进程 上工作,我会这样做:
Daemon dae=ofy().load().type(Daemon.class).filter("name", "example").first().now();
List<LicenseCountryCondition>test=ofy().load().type(LicenseCountryCondition.class).filter("daemon",dae).list();
for(LicenseCountryCondition i:test){
System.out.println(i.getName());
System.out.println(i.getDaemon().getName());
}
结果还不错
但是,当我尝试获取在特定国家/地区[=47=工作的LicenseCountryCondition列表时],它不起作用:
Country ctr=ofy().load().type(Country.class).filter("name", "France").first().now();
List<LicenseCountryCondition> test=ofy().load().type(LicenseCountryCondition.class).filter("country",ctr).list();
for(LicenseCountryCondition i:test){
System.out.println(i.getName());
}
我能得到这份名单吗? (我看到了this但不是同一个问题)
感谢您的关注。
确保您对法国的查询确实 returns 一个真实的国家(不为空)。
您所写的内容没有明显的错误,但是这里发生的事情太多,数据库状态太多未指定,以至于有人无法回答这个问题。最好的办法是将创建一些实体的测试用例放在一起(因此数据库状态是已知的),然后演示您认为应该成功但仍然失败的查询。