用户
定义为:
public class User {
private String email;
private String uid;
private List<Group> groups;
public User(String email, String uid) {
this.email = email;
this.uid = uid;
this.groups = new ArrayList<>();
}
public User() {}
public User(String email, String uid, ArrayList<Group> groups) {
this.email = email;
this.uid = uid;
this.groups = groups;
}
public String getEmail() {
return email;
}
public String getUid() {
return uid;
}
public List<Group> getGroups() {
return groups;
}
public void addGroup(Group group) {
if (this.groups == null) {
this.groups = new ArrayList<>();
}
this.groups.add(group);
}
}
Group
定义为:
public class Group {
private List<User> memberList;
private Group() {
}
public Group(List<User> users) {
this.memberList = users;
}
public void addMember(User member) {
this.memberList.add(member);
}
public List<User> getMemberList() {
return memberList;
}
}
尝试保存到 firebase 时,会出现运行时错误:
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonMappingException
at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:611)
问题与循环引用有关,还是 Firebase 无法以这种方式存储数据?
最佳答案
是的,我认为问题出在循环引用上。在有循环引用的地方,序列化总是有问题。
正如我们所见,用户和组之间存在双向关系。根据official documentation您可以将结构改进为:
{
"users": {
"user1": {
"name": "User 1",
"groups": {
"group1": true,
"group2": true,
"group3": true
},
"user2": {
"name": "User 2",
"groups": {
"group2": true,
"group3": true
}
},
...
},
"groups": {
"group1": {
"name": "Group 1",
"members": {
"user1": true
},
"group2": {
"name": "Group 2",
"members": {
"user1": true,
"user2": true
},
"group3": {
"name": "Group 3",
"members": {
"user1": true,
"user2": true
}
},
...
}
}
关于java - firebase 中的用户组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38213006/