Closed
Description
hasColumn会忽略table alias,导致多个表有同名字段时会返回错误
这会导致使用sql dsl时无法写出通用(可以同时处理是否联表的情况)的map:QueryRowSet -> Model
可以在JoinTest中用以下代码复现问题
data class Names(val name: String, val managerName: String?, val departmentName: String)
val emp = Employees.aliased("emp")
val mgr = Employees.aliased("mgr")
val dept = Departments.aliased("dept")
val results = emp
.select(emp.name)
.map {
Names(
name = it[emp.name]!!,
managerName = if(it.hasColumn(mgr.name)) it[mgr.name]!! else "",
departmentName = if(it.hasColumn(dept.name)) it[dept.name]!! else ""
)
}
assert(results.all { it.managerName == "" })
assert(results.all { it.departmentName == "" })