2017-08-16 8 views
0

こんにちは私はgreenDAO To-Manyリレーションを次のように使用しています: ユーザーは0個以上のオーディオブック(audiolibro in code)を聞くことができます。GreenDAOたくさんの関係に参加クラスに行を追加しない

@ToMany 
@JoinEntity(entity = UsuarioAudiolibro.class, 
      sourceProperty = "usuarioID", 
      targetProperty = "audiolibroID" 
      ) 
List<Audiolibro> audiolibros; 

私は次のようにいくつかのテストデータをロードするためのテストクラスを使用しています:

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

この後audilibrosのリストがここにアクセスすることができますが、私はセッションからデータを取得しようとすると、そのリストは空のように見えます。私は、アクティビティコードでリストリストリセット()をリセットしようとしましたが動作しません。データベースを調べると、JoinTableに行がありません。

私は間違っていますか?

答えて

0

手動で結合エンティティを作成する必要がありましたが、わかりませんでしたが、機能しました。

0

あなたはこの

 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); 
     ...... 
のように挿入する必要があり
関連する問題