Skip to content

无法使用kotlin unsigned类型进行扩展 #253

@yh0xa55a8

Description

@yh0xa55a8

Ktorm version: 3.2.0

扩展的代码

object ULongSqlType: SqlType<ULong>(Types.BIGINT, "bigint unsigned") {
    override fun doGetResult(rs: ResultSet, index: Int): ULong? =
        (rs.getObject(index) as? BigInteger)?.toLong()?.toULong()

    override fun doSetParameter(ps: PreparedStatement, index: Int, parameter: ULong) =
        ps.setLong(index, parameter.toLong())
}

fun BaseTable<*>.ulong(name: String) = this.registerColumn(name, ULongSqlType)

对应的Table object

object Users: Table<User>("user") {
    val id = ulong("id")
        .primaryKey()
        .bindTo { it.id }
}

配合spring boot使用
在User object初始化时报错:

java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "java.lang.reflect.InvocationHandler.invoke(Object, java.lang.reflect.Method, Object[])" is null
        at com.sun.proxy.$Proxy133.getId-s-VKNKU(Unknown Source) ~[na:na]
	at cn.yh0x13f.teatalk.data.sql.table.Users.<clinit>(Users.kt:10) ~[main/:na]

断点可见问题出现在bindTo { it.id }
推测问题抛出在获取实体列绑定的properties中

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions