Skip to content

Commit 35113b3

Browse files
fix null json bug
1 parent a7c287c commit 35113b3

File tree

3 files changed

+23
-1
lines changed
  • ktorm-jackson/src/main/kotlin/org/ktorm/jackson
  • ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql
  • ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql

3 files changed

+23
-1
lines changed

ktorm-jackson/src/main/kotlin/org/ktorm/jackson/JsonSqlType.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,24 @@ public inline fun <reified C : Any> BaseTable<*>.json(
7878
public class JsonSqlType<T : Any>(
7979
public val objectMapper: ObjectMapper,
8080
public val javaType: JavaType
81-
) : SqlType<T>(Types.VARCHAR, "json") {
81+
) : SqlType<T>(Types.OTHER, "json") {
8282

8383
private val hasPostgresqlDriver by lazy {
8484
runCatching { Class.forName("org.postgresql.Driver") }.isSuccess
8585
}
8686

87+
override fun setParameter(ps: PreparedStatement, index: Int, parameter: T?) {
88+
if (parameter != null) {
89+
doSetParameter(ps, index, parameter)
90+
} else {
91+
if (hasPostgresqlDriver && ps is PGStatement) {
92+
ps.setNull(index, Types.OTHER)
93+
} else {
94+
ps.setNull(index, Types.VARCHAR)
95+
}
96+
}
97+
}
98+
8799
override fun doSetParameter(ps: PreparedStatement, index: Int, parameter: T) {
88100
if (hasPostgresqlDriver && ps is PGStatement) {
89101
val obj = PGobject()

ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql/MySqlTest.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,11 @@ class MySqlTest : BaseTest() {
392392
set(it.arr, listOf(1, 2, 3))
393393
}
394394

395+
database.insert(t) {
396+
set(it.obj, null)
397+
set(it.arr, null)
398+
}
399+
395400
database
396401
.from(t)
397402
.select(t.obj, t.arr)

ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql/PostgreSqlTest.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -815,6 +815,11 @@ class PostgreSqlTest : BaseTest() {
815815
set(it.arr, listOf(1, 2, 3))
816816
}
817817

818+
database.insert(t) {
819+
set(it.obj, null)
820+
set(it.arr, null)
821+
}
822+
818823
database
819824
.from(t)
820825
.select(t.obj, t.arr)

0 commit comments

Comments
 (0)