groovy oracle结果资本列名称问题

时间:2015-01-13 21:30:07

标签: sql oracle groovy

在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查询以在别名中包含双引号,但你们有没有处理过它?

1 个答案:

答案 0 :(得分:0)

rows()方法返回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
}