kodeindb错误,无法在我的ViewModel中访问我的数据对象

发布于 2025-01-17 11:12:30 字数 1318 浏览 0 评论 0原文

我有一个数据类存储在数据库中。

@kotlinx.serialization.Serializable
data class SavedCalculation(
    override val id: String,
    val model1: Model1,
    val model2: Model2
):org.kodein.db.model.orm.Metadata {    
}
@kotlinx.serialization.Serializable
data class Model1(
    var attr1: String = "",
    var attr2: String = "",
)
@kotlinx.serialization.Serializable
data class Model2(
    var attr1: String = "",
    var attr2: String = "",
)

如果我在视图模型中调用 saveCalculation 对象;

var saved = mutableStateOf<List<SavedCalculation>>(listOf())
        private set

fun load(){
        viewModelScope.launch {
            useCases.load.invoke().collect { response ->
                when(response){
                    is Response.Loading -> {
                    }
                    is Response.Success -> {
                        saved.value = response.data
                        saved.value[0].model1 -> **this causes error.**
                    }
                    is Response.Error -> {}
                }
            }
        }
    }

错误:

无法访问“org.kodein.db.model.orm.HasMetadata”,它是“com.myapp.data.model.SavedCalculationDto”的超类型。检查模块类路径是否缺少或冲突的依赖项

i have a data class for store in db.

@kotlinx.serialization.Serializable
data class SavedCalculation(
    override val id: String,
    val model1: Model1,
    val model2: Model2
):org.kodein.db.model.orm.Metadata {    
}
@kotlinx.serialization.Serializable
data class Model1(
    var attr1: String = "",
    var attr2: String = "",
)
@kotlinx.serialization.Serializable
data class Model2(
    var attr1: String = "",
    var attr2: String = "",
)

if i call my savedCalculation object in my view model;

var saved = mutableStateOf<List<SavedCalculation>>(listOf())
        private set

fun load(){
        viewModelScope.launch {
            useCases.load.invoke().collect { response ->
                when(response){
                    is Response.Loading -> {
                    }
                    is Response.Success -> {
                        saved.value = response.data
                        saved.value[0].model1 -> **this causes error.**
                    }
                    is Response.Error -> {}
                }
            }
        }
    }

Error:

Cannot access 'org.kodein.db.model.orm.HasMetadata' which is a supertype of 'com.myapp.data.model.SavedCalculationDto'. Check your module classpath for missing or conflicting dependencies

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

会发光的星星闪亮亮i 2025-01-24 11:12:30

我的主包和数据包是单独的 gradle 构建文件,因此 kodeindb 无法从我的视图模型访问依赖项。
我只需在 build.gradle.kts 中添加相同的 kodeindb 依赖项,我的问题就解决了。

//into viewmodel package gradle file:

implementation("org.kodein.db:kodein-db-jvm:0.8.1-beta")

implementation("org.kodein.db:kodein-db-serializer-kotlinx:0.8.1-beta")

implementation("org.kodein.db:kodein-leveldb-jni-jvm-windows:0.8.1-beta")

implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2")

my main and data packages are seperate gradle build files, so kodeindb cant access dependencies from my view model.
i simply add same kodeindb dependencies in my build.gradle.kts, my problem solved.

//into viewmodel package gradle file:

implementation("org.kodein.db:kodein-db-jvm:0.8.1-beta")

implementation("org.kodein.db:kodein-db-serializer-kotlinx:0.8.1-beta")

implementation("org.kodein.db:kodein-leveldb-jni-jvm-windows:0.8.1-beta")

implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2")
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文