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


假设我想要获取一个用户列表,其中包含按用户 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) 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 时它工作正常。
到目前为止我尝试过的:
更新 忘记提及我还收到以下警告。稳定的时候怎么会没有支撑呢?
> Configure project :buildSrc …Run Code Online (Sandbox Code Playgroud)