2017-08-16 6 views
0

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?

Antwort

0

Ich musste die Join-Entities manuell erstellen, wusste nicht, aber es hat funktioniert.

0

du so

 DeviceGroup group = new DeviceGroup(); 
     group.setId(1l); 
     session.getDeviceGroupDao().insert(group); 

     Device device1 = new Device(); 
     device1.setId(1l); 
     session.getLedDeviceDao().insert(device1); 

     device2 = new Device(); 
     device2.setId(2l); 
     session.getLedDeviceDao().insert(device2); 
     ...... 

     JoinDeviceToGroup join1 = new JoinDeviceToGroup(); 
     join1.setId(1l); 
     join1.setGroupId(1l); 
     join1.setDeviceId(1l); 
     session.getJoinDeviceToGroupDao().insert(join1); 

     JoinDeviceToGroup join2 = new JoinDeviceToGroup(); 
     join2.setId(2l); 
     join2.setGroupId(1l); 
     join2.setDeviceId(2l); 
     session.getJoinDeviceToGroupDao().insert(join2); 
     ...... 
einsetzen sollte
Verwandte Themen