提问者:小点点

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


我使用Objectify将一个实体嵌入到另一个实体中。在嵌入和保存之前,我将某些字段设置为null,因为我将完整的实体存储在其他地方,我只是冗余地存储嵌入的实体,所以我不必显式地get()它。[是的,我知道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/任何记录来解决这个问题,但我宁愿不这样做。

我记得曾经读过datastore区分null和empty,我想知道我是否可以控制Objectify序列化嵌入实体的行为。

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


共1个答案

匿名用户

将此批注放在字段上:

@IgnoreSave(IfNull.class)
private String yourField;

这将防止存储空值。您可以使用其他if条件,或者您可以编写自己的条件。@Index@Unindex也接受这些条件。