代码之家  ›  专栏  ›  技术社区  ›  MDZ

使用ORMLite按列搜索编写查询

  •  0
  • MDZ  · 技术社区  · 7 年前

    选择my\u dream\u id、title\u dream、Decryption\u dream、saveDataDream from MyDream、User where User。user\u id=MyDream。user\u user\u id和user。firebaseId='56789'

    我不想用Java编写查询

    column database

    1 回复  |  直到 7 年前
        1
  •  0
  •   Renan Ceratto    7 年前

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

    然后你可以从用户的对象中访问梦境 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);
        }
    }