Android Firebase实时数据库关系

Android Firebase实时数据库关系,android,firebase,firebase-realtime-database,nosql,Android,Firebase,Firebase Realtime Database,Nosql,我仍在努力学习NoSQL数据库及其与Android的集成 我以前有一个SQL数据库,它在表之间有一些关系,如下所示 使用者 int id 文本名称 int-groupId 团体 int id 文本名 在Firebase中,我这样实现它们 { "user": { "1": { "name": "Jon", "groups": { "group1": true

我仍在努力学习NoSQL数据库及其与Android的集成

我以前有一个SQL数据库,它在表之间有一些关系,如下所示

使用者 int id
文本名称
int-groupId

团体 int id
文本名

在Firebase中,我这样实现它们

{
    "user": {   
        "1": {   
            "name": "Jon",   
            "groups": {   
                "group1": true   
            }   
        }   
    },   
    "groups": {   
       "group1": {   
           "name": "Group 1"   
       }
    }
}
在这里之前,我认为这很好,但当我用Java编写一些代码时,我不知道如何使用POJO。 以下是我迄今为止所做的:

public class Group {

    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class User {

    private String name;
    private Group groups;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Group getGroups() {
        return groups;
    }

    public void setGroups(Group groups) {
        this.groups = groups;
    }
}
现在读数值。(在方法OnCreate上)

FirebaseDatabase=FirebaseDatabase.getInstance();
DatabaseReference myRef=database.getReference(“用户”);
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
Iterable children=dataSnapshot.getChildren();
DataSnapshot next=children.iterator().next();
用户值=next.getValue(User.class);
Group Group=value.getGroups();
}
@凌驾
已取消的公共无效(DatabaseError错误){
//无法读取值
}
});

但是我的组的值总是空的。我做错了什么??如何将用户与组关联?

我发现的主要问题是
user
类中的
Group
对象:
事实上,如果它保持在当前结构中,它不应该是一个自定义对象,而是一个
映射。是地图对象-一个集合,它有一个
键和一个
值,就像
实时数据库中的子对象一样

如果
名称(=key)旁边没有
true
(=value),则名称可以存储在
字符串
变量中,但情况并非如此,因为
实时数据库
中的每个子级都必须有一个值,并存储一个“伪值”组名称旁边的值使每个组成为
映射的一部分。当前的“虚拟”是一个
布尔值
,这就是为什么这将是组的数据类型:
映射组

因此,您的
用户
类应如下所示:

public class User {

    private String name;
    private Map<String,Boolean> groups;
公共类用户{
私有字符串名称;
私有地图组;
使用这种确切类型的一个好例子是

public class User {

    private String name;
    private Map<String,Boolean> groups;