2017-08-16 79 views
0

你好,我正在使用greenDAO多对多关系如下: 用户可以听0或许多有声读物(audiolibro代码),所以我有这个实体类。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的名单,但是当我尝试检索会话数据列表看起来是空的活动。我尝试在活动代码中重新设置resetlist()列表,但不起作用。当我检查数据库时,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); 
     ......