Karl Azzam
01/30/2025, 4:53 PMclass PostgreSQLJsonValue<T>(
private val expr: Expression<*>,
override val columnType: ColumnType,
private val jsonPath: List<String>
) : Function<T>(columnType) {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
append("(")
append(expr)
append("${jsonPath.joinToString { it }})::${columnType.sqlType()}")
}
}
what is the new way to implement the above?
im referencing this code from here https://brightinventions.pl/blog/exposed-in-your-project-json-support/
so i can do something like this (jsonb query)
fun findByNickname(nickname: String): FoundPersonWithAddressDto? = transaction {
PersonEntity
.find { PersonTable.details.jsonValue<String>("->>'nickname'") eq nickname }
.firstOrNull()
?.load(PersonEntity::addresses)?.toFoundPersonWithAddressDto()
}
Chantal Loncle
01/30/2025, 7:38 PMclass PostgreSQLJsonValue<T>(
private val expr: Expression<*>,
columnType: ColumnType<T & Any>, // <---
private val jsonPath: List<String>
) : Function<T>(columnType) {
override fun toQueryBuilder(queryBuilder: QueryBuilder) = queryBuilder {
append("(")
append(expr)
append("${jsonPath.joinToString { it }})::${columnType.sqlType()}")
}
}
Karl Azzam
02/04/2025, 7:54 PM