groovy oracle结果大写列名问题
groovy oracle result capital column name issue
在 Groovy 中,要设置一个 bean,您只需要在创建对象时提供 GroovyRowResult。
考虑下面的 People.groovy bean:
class People {
String name
int age
}
我的sql查询:
select * from People -- returns name and age of people
返回 GroovyRowResult,其中列名(键)大写:[NAME:"Alex", AGE: 21]。
所以当我尝试像下面这样设置 bean 时:
le.rows(sqlQuery).each {
People p = new People(it)
}
我收到异常:
groovy.lang.MissingPropertyException: No such property: NAME for class: People. Possible solutions: name
我想我可以修改 sql 查询以在别名上包含双引号,但是你们处理它有什么不同吗?
rows() 方法 returns a List<GroovyRowResult>
其中 GroovyRowResult
实现 Map
然后你可以应用 collectEntries
对其进行转换,以便键为小写,您可以使用生成的映射:
sql.rows('select * from people').each {
People p = new People(it.collectEntries { k,v -> [k.toLowerCase(), v] })
println p.name
println p.age
}
在 Groovy 中,要设置一个 bean,您只需要在创建对象时提供 GroovyRowResult。
考虑下面的 People.groovy bean:
class People {
String name
int age
}
我的sql查询:
select * from People -- returns name and age of people
返回 GroovyRowResult,其中列名(键)大写:[NAME:"Alex", AGE: 21]。 所以当我尝试像下面这样设置 bean 时:
le.rows(sqlQuery).each {
People p = new People(it)
}
我收到异常:
groovy.lang.MissingPropertyException: No such property: NAME for class: People. Possible solutions: name
我想我可以修改 sql 查询以在别名上包含双引号,但是你们处理它有什么不同吗?
rows() 方法 returns a List<GroovyRowResult>
其中 GroovyRowResult
实现 Map
然后你可以应用 collectEntries
对其进行转换,以便键为小写,您可以使用生成的映射:
sql.rows('select * from people').each {
People p = new People(it.collectEntries { k,v -> [k.toLowerCase(), v] })
println p.name
println p.age
}