问题描述
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 (将#修改为@)