【问题标题】:Writing a query with ORMLite search by column使用 ORMLite 按列搜索编写查询
【发布时间】:2017-09-17 18:20:16
【问题描述】:

我必须列用户和我的梦想。我需要使用 OrmLite 创建查询,并通过 firebase_id 显示 my_dream。 这是我的 sql 查询

select my_dream_id, title_dream,descryption_dream,saveDataDream from MyDream,User where User.user_id = MyDream.user_user_id and User.firebaseId='56789'

我不知道用 Java 写查询

【问题讨论】:

    标签: android ormlite


    【解决方案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;
    }
    

    那么,正如我问过here,你需要使用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();
    

    然后你可以使用iterator()从用户对象users.get(i).getDreams()访问梦想,像这样:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多