Hallo, ich benutze greenDAO To-Many Relationen wie folgt: Ein Benutzer kann 0 oder viele Hörbücher hören (audiolibro im Code), also habe ich das in der Entity-Klasse.GreenDAO Zu vielen Relationen, die keine Zeilen zur Join-Klasse hinzufügen
@ToMany
@JoinEntity(entity = UsuarioAudiolibro.class,
sourceProperty = "usuarioID",
targetProperty = "audiolibroID"
)
List<Audiolibro> audiolibros;
Ich verwende eine Testklasse einige Testdaten zu laden, wie folgt:
public class Prueba {
public static void datosPrueba(DaoSession session){
session.getPersonaDao().deleteAll();
session.getUsuarioDao().deleteAll();
session.getAudiolibroDao().deleteAll();
Persona pers = new Persona();
// ... set persona data
Persona pers2 = new Persona();
// ... idem
Persona pers3 = new Persona();
// ... same
// Here I persist Persona
PersonaDao persDao = session.getPersonaDao();
persDao.insertOrReplace(pers);
persDao.insertOrReplace(pers2);
persDao.insertOrReplace(pers3);
//Create users 1-to many
Usuario user = new Usuario();
//sets data for user
Usuario user2 = new Usuario();
//sets data for another user
Usuario user3 = new Usuario();
//same again
user.setPersona(pers);
user2.setPersona(pers2);
user3.setPersona(pers3);
// persist usuario
UsuarioDao userDao = session.getUsuarioDao();
userDao.insertOrReplace(user);
userDao.insertOrReplace(user2);
userDao.insertOrReplace(user3);
userDao.insertOrReplace(user4);
//Create audiolibros
Audiolibro audio = new Audiolibro();
//... set audiolibro data
Audiolibro audio2 = new Audiolibro();
// ... set data
Audiolibro audio3 = new Audiolibro();
// ... set data
//persist audiolibro
AudiolibroDao audioDao = session.getAudiolibroDao();
audioDao.insertOrReplace(audio);
audioDao.insertOrReplace(audio2);
audioDao.insertOrReplace(audio3);
//add audiolibros to usuario
List<Audiolibro> audiolibrosUser = user.getAudiolibros();
audiolibrosUser.add(audio);
audiolibrosUser.add(audio2);
userDao.update(user);
List<Audiolibro> audiolibrosUser2 = user2.getAudiolibros();
audiolibrosUser2.add(audio2);
audiolibrosUser2.add(audio3);
userDao.update(user2);
List<Audiolibro> audiolibrosUser3 = user3.getAudiolibros();
audiolibrosUser3.add(audio3);
audiolibrosUser3.add(audio);
userDao.update(user3);
}
}
Danach die Liste der audilibros hier zugegriffen werden kann, aber wenn ich versuche, Daten von Sitzung abzurufen in eine Aktivität scheint die Liste leer zu sein. Ich habe versucht, die Liste mit resetlist() im Aktivitätscode zurückzusetzen, funktioniert aber nicht. Wenn ich die Datenbank überprüfe, gibt es keine Zeilen in der JoinTable.
Was mache ich falsch?