Java 我可以控制Objectify如何序列化嵌入式实体吗?

Java 我可以控制Objectify如何序列化嵌入式实体吗?,java,google-app-engine,google-cloud-datastore,objectify,Java,Google App Engine,Google Cloud Datastore,Objectify,我使用Objectify将一个实体嵌入到另一个实体中。在嵌入和保存之前,我将某些字段设置为null,因为我将完整的实体存储在其他位置,并且我只是冗余地存储嵌入的实体,所以我不必显式地获取它。[是的,我知道get()相当便宜,但在我的情况下它仍然太贵,所以我宁愿将所有内容都放在一个记录中。] 在数据存储(本地)中,嵌入式实体如下所示: <EmbeddedEntity [User(6702622882922496)]: status = null (unindexed) avatar = fb

我使用Objectify将一个实体嵌入到另一个实体中。在嵌入和保存之前,我将某些字段设置为null,因为我将完整的实体存储在其他位置,并且我只是冗余地存储嵌入的实体,所以我不必显式地获取它。[是的,我知道get()相当便宜,但在我的情况下它仍然太贵,所以我宁愿将所有内容都放在一个记录中。]

在数据存储(本地)中,嵌入式实体如下所示:

<EmbeddedEntity [User(6702622882922496)]: status = null (unindexed) avatar = fbcdn-profile-a.akamaihd.net/hprofile-ak-xfa1/v/t1.0-1/c127.37.466.466/s160x160/284313_181267978606379_897018_n.jpg?oh=07d9502745b9b4d80e5ed52fb46d8b24&oe=54C4D556&__gda__=1422892826_7eb452a4b837d668572e5053c5936be8 (unindexed) displayName = null (unindexed) version = 1414555328756 (unindexed) > (unindexed)
(未索引)
如您所见,Objectify显式存储空字段

我知道我可以通过序列化/JSONing/任何记录来解决这个问题,但我不希望这样

我记得读过数据存储区分null和empty,我想知道是否可以控制Objectify序列化嵌入实体的行为


有便宜的解决办法吗?负载组?您可以看到我所做的任何缺陷都可能导致问题,例如,当通过REST发送并缓存这样一个“裸骨”实体时?

将此注释放在您的字段上:

@IgnoreSave(IfNull.class)
private String yourField;

这将防止存储空值。还有其他
If
条件可以使用,也可以自己编写
@Index
@Unindex
也接受这些条件。

这很好地解决了问题,谢谢杰夫。在类级别允许@IgnoreSave(),比如@Index/@Unindex,在这里我可以为整个类设置默认值,这难道没有意义吗?