Grupo de usuarios en firebase

Un User se define como:

 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 se define como:

 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; } } 

Al intentar guardar en firebase, esto da un error de tiempo de ejecución de:

 java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/JsonMappingException at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:611) 

¿El problema tiene que ver con referencias circulares o Firebase no puede almacenar datos de esta manera?

Sí creo que el problema es con referencia circular. Donde hay referencia circular, siempre hay problema con la serialización.

Como podemos ver, usted tiene una relación bidireccional entre Usuarios y Grupos. Según la documentación oficial se puede mejorar la estructura como:

 { "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 } }, ... } } 
  • Http Post Con El Cuerpo
  • Error al configurar SDK: Error: Módulo 'app': plataforma 'Google Inc.: API de Google: 21' no encontrado
  • Java / Android: java.lang.OutOfMemoryError mientras se construye un objeto JSON
  • Privilegios elevados en la aplicación para Android
  • FireBase Job Dispatcher. El trabajo comienza después de 20-60 seg, incluso con Triger.Now. ¿Cómo puedo arreglarlo?
  • ¿Cómo detectar el número de dedos utilizados?
  • Explorador abierto de Android del servicio evitando múltiples pestañas
  • Nombres de los parámetros del método build-preserve de Gradle release
  • ¿El sistema android incluye JVM?
  • SimpleXML, org.simpleframework.xml.core.PersistenceException
  • Inyección Dagger 2 en clase Java no Activity
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.