Java 按Objectify中嵌入实体的id筛选

Java 按Objectify中嵌入实体的id筛选,java,google-app-engine,objectify,Java,Google App Engine,Objectify,假设我有 @Entity public class Car implements Serializable{ @Id private Long id = null; @Index private Driver driver = null; ... } 及 如何在Objectify中根据汽车实体的驾驶员实体id过滤汽车实体?类似于of y().load().type(Car.class).filter(“driver.id”,someId.first().now() 提

假设我有

@Entity
public class Car implements Serializable{

    @Id private Long id = null;
    @Index private Driver driver = null;
    ...
}

如何在Objectify中根据汽车实体的驾驶员实体id过滤汽车实体?类似于
of y().load().type(Car.class).filter(“driver.id”,someId.first().now()


提前谢谢。

目前,你不能。即使可以,也几乎肯定会有一些尴尬的事情,比如
过滤器(“driver.\uuuukey.\uuuukey”,key.create(driver.class,someId))
。这已经进入了一个相当遥远的未知领域。除非您非常熟悉GAE和Objectify,否则最好删除
@Id
注释,并像处理常规嵌入对象一样处理嵌入实体。没有理由说
id
不能只是一个常规(索引)属性。

但是我不能删除
@id
注释,因为每个实体都必须有一个字段,用
@id
注释嵌入的对象不必是
@entity
。它们可以是普通的pojo。实际上,嵌入
@Entity
对象是可能的,但它有一些比您可能想要做的更复杂的含义(它设置了嵌入实体的键)。除非你真的知道你在做什么,否则你可能想要无键嵌入的东西。但我需要它们是
@Entity
,我在代码的其他部分使用它们。在这种情况下,将id字段复制到一个真正的
@Index
字段中。在
@OnSave
方法中填充它,并且不提供任何getter或setter,因此它对其余代码是隐藏的。密钥在数据存储中是特殊的,ID作为密钥的一个组件,不能唯一地进行过滤。
@Entity
public class Driver implements Serializable{

    @Id private Long id = null;
    ...
}