tout d'abord, vous devez définir vos classes:
public class User {
@DatabaseField(id = true)
private Integer user_id;
@DatabaseField
private String email;
@DatabaseField
private Integer firebase_id;
@DatabaseField
private String fullname;
@DatabaseField
private String photo_url;
@ForeignCollectionField
private LazyForeignCollection<Dream, Integer> dreams;
}
public class Dream {
@DatabaseField(id = true)
private Integer my_dream_id;
@DatabaseField
private String description_dream;
@DatabaseField
private ?? saveDataDream;
@DatabaseField
private String titleDream;
@DatabaseField(columnName = "user_user_id", foreign = true)
private User user;
}
Ensuite, comme je l'ai demandé here, vous devez utiliser Join pour interroger les résultats
Son même explication, mais voici le code à votre exemple
Dao<User, Integer> userDao = DaoManager.createDao(getConnectionSource(), User.class);
Dao<Dream, Integer> dreamDao = DaoManager.createDao(getConnectionSource(), Dream.class);
QueryBuilder<User, Integer> userQa= userDao.queryBuilder();
userQa.where().eq("firebaseId", 56789);
QueryBuilder<Dream, Integer> dreamQa = dreamDao.queryBuilder();
users = userQa.join(dreamQa).query();
Ensuite, vous pouvez accéder à des rêves de USAGER objet users.get(i).getDreams()
en utilisant iterator()
, comme ceci:
CloseableIterator<Dream> itDream = users.get(id).getDreams().closeableIterator();
try {
while (itDream.hasNext()) {
Dream dream = itDream.next();
}
} finally {
try {
itDream.close();
} catch (IOException e) {
Log.e(TAG, "FAIL", e);
}
}