我有一个用例,我必须保存一个递归对象
两个班级:
v
我也将两个对象分别保存在两个不同的表中。 为此,我需要在Item模型的List字段中添加@Ignore 和Option模型中List列表中的@Ignore。
我现在需要一个完整的递归结构,并希望将其保存在另一个表中。 为此,我尝试将@IgnoreSave(IfNull.class)放在Item模型的List字段和Option模型的List字段中。
但是当我在执行上述操作后启动应用程序时,出现了stackoverflow错误。错误是以下类型的错误:
public class Item{
@Id
private Long id;
@Index
private String name;
@Index
private String sku;
@Index
private Long shopId;
@Index
private String imageUrl="";
@Index
private List<Long>optionIds;
private List<Option> options;
}
public class Option{
@Id
private Long id;
@Index
private String name;
@Index
private String sku;
@Index
private Long shopId;
@Index
private String imageUrl="";
@Index
private List<Long>itemIds;
private List<Item> items;
}
我现在被困住,需要帮助很严重。是否存在通过客观化存储递归结构的替代解决方案?
答案 0 :(得分:1)
看起来您正在尝试保存两个相互引用的不同实体。为此,您应使用Key<?>
或Ref<?>
字段。对于像这样的指针,递归没有问题。
通过指定List<Item>
和List<Option>
,您告诉Objectify您希望在单个实体中递归地嵌入这些内容。 Objectify不支持递归嵌入类(至少,还没有)。