如何解决使用Kotlin Exposed时,如何处理sqlite数据库中数字的缺失值?
0|some_text0|123.456||some_other_text0
1|some_text1||456.789|some_other_text1
因此您可以看到第三和第四列是数字,但在某些记录中,该列中的数据为空。
我使用与此示例类似的方式定义了接口。
object Foos : IntIdTable("foos") {
val sequelId = integer("id").primaryKey()
val text0 = text("text0")
val num0 = float("num0").nullable()
val num1 = float("num1").nullable()
val text1 = text("text1")
}
class Foo(id: EntityID<Int>) : IntEntity(id) {
companion object : IntEntityClass<Foo>(Foos)
var sequelId by Foos.sequelId
var text0 by Foos.text0
var num0 by Foos.num0
var num1 by Foos.num1
var text1 by Foos.text
}
如果我查询包含缺失值的记录并尝试访问该字段,则会抛出异常,例如java.lang.String无法转换为java.math.Float?
例如:
val x = queryResult0.num1 //fails
我可以通过以下方式获得通过
:val x = try { queryResult0.num1 } catch(e: Exception) { null } // works I get a value or null
我当前的“ hacky”解决方案是为诸如此类的字段添加第二组吸气剂:
class Foo(id: EntityID<Int>) : IntEntity(id) {
companion object : IntEntityClass<Foo>(Foos)
var sequelId by PinTimings.sequelId
var text0 by Foos.text0
var num0 by Foos.num0
var num1 by Foos.num1
var text1 by Foos.text
val num0x : Float?
get() = try { num0 } catch(e: Exception) { null }
val num1x : Float?
get() = try { num1 } catch(e: Exception) { null }
}
然后queryResut0.num1x
提供了我所需要的。
处理这种情况的正确方法是什么?
仅供参考:我正在使用以下设置
- 科特琳:1.2.61
- 已暴露:org.jetbrains.exposed:已暴露:0.17.7
- JDBC:org.xerial:sqlite-jdbc:3.32.3.2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。