Написание запроса с поиском ORMLite по столбцам
Я должен столбец User и MyDream. Мне нужно создать запрос с OrmLite с дисплеем my_dream по firebase_id. Это мой sql запрос
выберите my_dream_id, title_dream,descryption_dream,saveDataDream из MyDream, пользователя, где User.user_id = MyDream.user_user_id и User.firebaseId='56789'
Я не знаю, есть запрос на запись в Java
1 ответ
Решение
Прежде всего, вам нужно определить ваши классы:
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;
}
Затем, как я уже просил, вам нужно использовать Join для запроса результатов
Это то же самое объяснение, но вот код вашего примера
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();
Тогда вы можете получить доступ к снам из объекта пользователя users.get(i).getDreams()
с помощью iterator()
, как это:
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);
}
}