Firebase使用循环引用保留数据

时间:2018-08-05 09:21:03

标签: android firebase firebase-realtime-database

我有一个简单的数据要保存在Firebase上。

此数据是我的关系模型的域类(我从一个关系模型开始,现在我决定是否迁移到firebase,但有一段时间我同时使用...或尝试迁移)

如果我的类在firebase上,要保留新实例,我需要这样做:

Map<String, Object> firebase = new HashMap<String, Object>();
            firebase.put("raffleDate", this.giveaway.getRaffleDate());
            firebase.put("thumbnailUrl", this.giveaway.getThumbnailUrl());
            firebase.put("mustFollowList", this.giveaway.getMustFollowList());
            firebase.put("owner", this.giveaway.getOwner());
            firebase.put("amountFriendsToIndicate", this.giveaway.getAmountFriendsToIndicate());
            firebase.put("mediaId", this.giveaway.getMediaId());

            ((App) getApplication()).getFirebase().child("giveaways").child(this.giveaway.getMediaId()).setValue(firebase);

因为除了这些字段Giveaway之外还有一个字段本身具有循环引用

@ToMany(referencedJoinProperty = "raffle")
    @Expose(deserialize = false, serialize = false)
    private List<UserOnGiveaway> attendantsTickets;

此字段映射了用户与其赠品之间的关系,UserOnGiveaway类引用了UserGiveaway,因此当我尝试坚持时,会出现很长的非补偿性错误,我只能猜测是由于循环引用引起的stackoverflow

问题是我对保留此字段并没有真正的兴趣,在我实际的“混合”体系结构中,我仅使用Firebase来保留用户之间共享的数据,单个用户数据存储在android sqlite上本地

所以我想知道有什么方法可以注释此字段以强制Firebase忽略它吗?

或者在firebase调用上可以设置任何参数吗?

请不要建议transient,因为它也会影响我的ORM
PLEASE2不建议在域上进行更改,因为我正在尝试启用Firebase,因此在决定使用它之前不会进行任何结构上的更改。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以在字段上使用@Exclude批注或使用getter / setter方法将其从Firebase SDK的序列化中忽略。