java - 来自子查询的 SQLite : How to populate a boolean field on a pojo,

标签 java android sql sqlite android-room

我想返回一个帖子列表,例如。

@Query("SELECT * FROM posts")
List<Post> getPosts()

我有一个 pojo。

post {
   name:String
   id :String
   postUid:String
   userHasNewContent:Boolean
}

现在,我希望列表中的每个帖子都有 userHasNewContent:Boolean,通过检查拥有此帖子的用户是否有新内容(不超过一周)来填充

所以我试过了。

@Query("SELECT *,
       (SELECT content_uid FROM content WHERE content_uid = postUid AND
        contentTime < :aWeekAgo)AS userHasNewContent 
      FROM posts")
List<Post> getPosts(String aWeekAgo)

WHERE 内容是: 内容{ contentTime:Long//Unix时间戳 编号:字符串

public static Long aWeekAgo() {
        long day = (1000 * 60) * 60 * 24;
        return System.currentTimeMillis() - day * 7;
    }

这似乎没有按预期工作,我这样做了吗?

编辑 好了,问题写完了,我想做什么就很清楚了。这是简短版本。

//Get all posts
@Query("SELECT * FROM posts")
List<Post> getPosts()

//Then loop through them.
@Query("SELECT count(*) FROM content WHERE contentId :contentUID AND soundTime < : aWeekAgo")
int checkIfUserHasNewContent(String uid, long aWeekAgo);


List<Post> postsWithNewContentIndicator = new ArrayList<>();
for (Post post : postsFromDb) {
    post.userHasNewContent(checkIfUserHasNewContent(post.getUid()) > 0);
    postsWithNewContentIndicator.add(post);
}

所以,但我想通过单个查询来完成此操作,而不是使用此循环。

最佳答案

您需要将查询重写如下

SELECT 
  *, 
  (
    (
      SELECT 
        COUNT(*) 
      FROM 
        (
          SELECT 
            content_uid 
          FROM 
            content 
          WHERE 
            content_uid = postUid 
            AND contentTime > : aWeekAgo
        )
    )> 0
  ) AS userHasNewContent 
FROM 
  posts

关于java - 来自子查询的 SQLite : How to populate a boolean field on a pojo,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53757100/

相关文章:

java - spring-boot:在哪里定义了生成 jar 文件的设置

java - Java中将字符串转换为二维字符串数组

java - OnGenericMotionListener 似乎不起作用

php - SQL/PHP查询错误

mysql - 复制表中的所有行并防止重复键

java - 使用 for every 迭代 HashSet

android - 移动 webkit 中的字体大小意外增加

android - 使用 adobe AIR 应用程序进行 Google 分析?

SQL Server : merge subqueries without duplicate

java - 高效搜索字符串中的单词