小编svo*_*oid的帖子

如何将条件应用于关系,或者如何在 Room 中正确处理带有 WHERE 子句的 JOIN 查询?

请耐心等待,我对架构组件和 Android 总体来说是新手。我的问题与这个问题类似,但不幸的是接受的答案似乎不起作用。我有一个像这个答案一样的一对多关系的例子 。我的示例数据库有两个表 USERS 和 PETS,如下图所示:

12

假设我想要获取一个用户列表,其中包含按用户 ID 分组的宠物列表(仅限5 岁以下的宠物)。结果应如下所示(伪代码):

{uId:2,[Pet3,Pet4];uId: 4, [Pet6, Pet7];}

另一个要求是 Dao 需要将列表作为 LiveData 对象返回,因为我使用 MVVM 架构并希望它具有生命周期感知和可观察性。

满足这些要求,UserDao将如下所示:

@Dao
interface UserDao {

    @Insert
    void insert(User user);

    @Transaction
    @Query("SELECT USERS.uId, PETS.pId , PETS.userId, PETS.age " + 
    "FROM USERS INNER JOIN PETS ON PETS.userId = USERS.uId " +
    "WHERE PETS.age < 5 " +
    "GROUP BY USERS.uId")
    LiveData<List<UserWithPets>> getUserPets();

}
Run Code Online (Sandbox Code Playgroud)

用户实体:

@Entity
public class User {
    @PrimaryKey
    public …
Run Code Online (Sandbox Code Playgroud)

android pojo relation android-room android-livedata

5
推荐指数
0
解决办法
375
查看次数

尝试更新到 Kotlin 1.4.0 时遇到奇怪的错误。如何使其与 Gradle 和 IntelliJ IDEA 2020.2.1 一起使用?

Kotlin 1.4.0 现已稳定。因此,我想更新我的多模块 Android 项目来使用它。我将 IDEA 设置为使用 Kotlin 插件 1.4.0-release-IJ2020.2-1 并在使用 Kotlin DSL 的 buildSrc build.gradle.kts 中,我为 jvm 加载 Kotlin,如下所示:

plugins {
    kotlin("jvm") version "1.4.0"
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序级插件块看起来像这样

plugins {
    id("com.android.application")
    id("com.google.gms.google-services")
    kotlin("android")
    kotlin("kapt")
    id("kotlin-android-extensions")
    id("androidx.navigation.safeargs.kotlin")
}
Run Code Online (Sandbox Code Playgroud)

我还将 Kotlin stdlib 添加到我的应用程序级别 build.gradle.kts 依赖项中

implementation("org.jetbrains.kotlin:kotlin-stdlib:1.4.0")
Run Code Online (Sandbox Code Playgroud)

现在尝试构建我的项目时,我收到多个错误,如下所示:

'let((T) -> R): R' is only available since Kotlin 1.3.50 and cannot be used in Kotlin 1.3
Run Code Online (Sandbox Code Playgroud)

我不明白。gradle 是如何尝试在这里使用 Kotlin 1.3 的?知道如何解决这个问题吗?当使用 Kotlin v1.3.72 时它工作正常。

到目前为止我尝试过的:

  • 清洁工程
  • 使缓存无效并重新启动
  • 删除.gradle文件夹并重新启动
  • 修复损坏的类路径

更新 忘记提及我还收到以下警告。稳定的时候怎么会没有支撑呢?

> Configure project :buildSrc …
Run Code Online (Sandbox Code Playgroud)

android intellij-idea gradle kotlin

5
推荐指数
1
解决办法
6473
查看次数