2017-09-17 2 views
0

Je dois colonne User et MyDream. J'ai besoin de créer une requête avec OrmLite avec dispaly my_dream par firebase_id. Cette ma requête sqlEcriture d'une requête avec recherche ORMLite par colonne

select my_dream_id, title_dream, descryption_dream, saveDataDream de MyDream, où l'utilisateur User.user_id = MyDream.user_user_id et User.firebaseId = '56789'

Je ne idée a écrire requête dans Java

column database

Répondre

0

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