ctripcorp / SQLlin

A DSL ORM library for Kotlin Multiplatform.
Apache License 2.0
219 stars 10 forks source link

我按照说明文档一步一步进行,但无法正常使用 #69

Closed Matcha-xiaobin closed 6 months ago

Matcha-xiaobin commented 6 months ago

我仔细按照教程 开始使用 一步一步进行 我给我的实体类加上了DBRow image

但是我无法找到这个类对应的表 image image

是什么地方缺少了什么吗?

qiaoyuang commented 6 months ago

看看 build.gradle.kts 中你对 sqllin-processor 的依赖

Matcha-xiaobin commented 6 months ago

image

因为用不了,暂时先注释掉了

用sql语句建表是指什么?文档中并未详细说明,所以我不太明白 @qiaoyuang

qiaoyuang commented 6 months ago

SQL 语句建表那个忽略,我刚才看错了。其实你的问题是 KSP 生成的 Table 对象找不到,我现在在火车上不方便,等明天我给你看下。

Matcha-xiaobin commented 6 months ago

好的,顺便有劳大佬看下这个问题: image 不知道如何解决

qiaoyuang commented 6 months ago

这个问题跟 SQLlin 无关吧?只有这些报错信息我也不知道该如何解决。你可以在 YouTrack 上搜索相关关键字或者提问,JetBrains 官方的人应该可以帮助你。

Matcha-xiaobin commented 6 months ago

这个问题跟 SQLlin 无关吧?只有这些报错信息我也不知道该如何解决。你可以在 YouTrack 上搜索相关关键字或者提问,JetBrains 官方的人应该可以帮助你。

因为我这边看了下我只是加入了SQLlin 就出现了这个问题,所以就觉得可能是这个导致的,我自己又研究了下,似乎是KSP的问题。先不管这个了,不影响运行。

qiaoyuang commented 6 months ago

你检查一下这行代码在不在你的 build.gradle.kts 里:

kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin")

如果在的话,你完整 build 一次看看你的这个路径下有没有 Table 类生成

Matcha-xiaobin commented 6 months ago

你检查一下这行代码在不在你的 build.gradle.kts 里:

kotlin.srcDir("build/generated/ksp/metadata/commonMain/kotlin")

如果在的话,你完整 build 一次看看你的这个路径下有没有 Table 类生成

这行代码在的,但是没有生成ksp这个路径

Matcha-xiaobin commented 6 months ago

image

Matcha-xiaobin commented 6 months ago

image image image image 这是我的相关配置,有劳大佬看下。 sqllin 是 1.2.3,放在了 commonMain 里

Matcha-xiaobin commented 6 months ago

ksp我记得我是尝试过1.9.21 版本,结果是一样的

qiaoyuang commented 6 months ago

在确保 Kotlin 1.9.21,KSP 版本 1.9.21-1.0.15 的情况下也会出现问题吗?我看你注释掉的 KSP 版本是 1.9.21-1.0.16

Matcha-xiaobin commented 6 months ago

在确保 Kotlin 1.9.21,KSP 版本 1.9.21-1.0.15 的情况下也会出现问题吗?我看你注释掉的 KSP 版本是 1.9.21-1.0.16

尝试过1.9.21-1.0.15,没用

qiaoyuang commented 6 months ago

那仅从这些信息我已经看不出问题了,你能否提供一个可以复现该问题的最小 demo 工程?

Matcha-xiaobin commented 6 months ago

Demo.zip 这是demo,你可以看下

qiaoyuang commented 6 months ago

我尝试了以下几处更改,目前已经可以生成 BrowsingHistoryBeanTable 类。具体做法如下你可以尝试:

// KSP dependencies
dependencies {
    // sqllin-processor
    add("kspCommonMainMetadata", "com.ctrip.kotlin:sqllin-processor:1.2.3")
}

afterEvaluate {  // WORKAROUND: both register() and named() fail – https://github.com/gradle/gradle/issues/9331
    tasks {
        withType<KotlinCompile<*>> {
            if (name != "kspCommonMainKotlinMetadata")
                dependsOn("kspCommonMainKotlinMetadata")
        }
    }
}

第 3 点是由于 Gradle 8.0 后出现了一个问题(问题链接可参照以上代码中的注释),目前社区的解决方案普遍是加以上代码来暂时规避。

Matcha-xiaobin commented 6 months ago

我尝试了以下几处更改,目前已经可以生成 BrowsingHistoryBeanTable 类。具体做法如下你可以尝试:

    1. 所有 Java 版本的设置从 18 改成 17,Java 18 为非长期支持版本,社区生态在支持方面不如长期支持版本。
    1. sqllin-processor 的版本设置上从 libs 的写法改成直接写数字(我本地用你的写法会 build 报错)
    1. 在 shared module 的 build.gradle.kts 中添加如下代码(dependencies {} 块下方的代码):
// KSP dependencies
dependencies {
    // sqllin-processor
    add("kspCommonMainMetadata", "com.ctrip.kotlin:sqllin-processor:1.2.3")
}

afterEvaluate {  // WORKAROUND: both register() and named() fail – https://github.com/gradle/gradle/issues/9331
    tasks {
        withType<KotlinCompile<*>> {
            if (name != "kspCommonMainKotlinMetadata")
                dependsOn("kspCommonMainKotlinMetadata")
        }
    }
}

第 3 点是由于 Gradle 8.0 后出现了一个问题(问题链接可参照以上代码中的注释),目前社区的解决方案普遍是加以上代码来暂时规避。

好的,非常感谢,我稍后尝试一下!

Matcha-xiaobin commented 6 months ago

@qiaoyuang 试了下,确实可以生成了,感谢!