Получить сопоставленное значение из ключа в groovy

У меня есть карта, которую я распечатал, и я вижу на ней значения как божий день:

searchMatch.each {
    println("The match: " + it.employee.employeeID)
    int empID = Integer.parseInt(it.employee.employeeID);
    println("empID:" + empID)
    println("parsedResults: " + parsedResults)
    println("parsedResults[empID]: " + parsedResults[empID])
}

И вывод примерно такой:

The match: 0518
empID:518
parsedResults: [518:[id:518, emp_name:Derek, title:Software Engineer ]]
parsedResults[empID]: null

Так что же здесь происходит? Я предполагаю, что использую какой-то неправильный тип для ключа, но я просто не знаю, как это должно работать в groovy на самом деле. Если кто-то может объяснить, что здесь происходит, я был бы признателен.


person Derek    schedule 28.10.2011    source источник
comment
Каковы типы empID и ключ в parsedResults?   -  person Dave Newton    schedule 28.10.2011
comment
parsedResults - это groovyRowResult из sql.rows(), поэтому я предполагаю, что это строка? ID сотрудника — это строка. Я пытался заставить его, говоря parsedResults[518] и parsedResults[518] и т. д., и я не могу заставить его найти значения   -  person Derek    schedule 28.10.2011
comment
Я бы, наверное, проверил тип вместо того, чтобы гадать, на всякий случай ;)   -  person Dave Newton    schedule 28.10.2011
comment
Мои деньги на комбо GString/String/Integer   -  person tim_yates    schedule 28.10.2011
comment
Хм. Интересно. Тип ключа — BigDecimal, поэтому я думаю, это объясняет это.   -  person Derek    schedule 28.10.2011
comment
@Дерек Да; всегда проверяйте типы — только потому, что вещи выглядят одинаково, не означает, что они одинаковы.   -  person Dave Newton    schedule 28.10.2011


Ответы (1)


Итак, как оказалось, возвращаемый тип для "int" из sql.rows() является BigDecimal для ключа. Вот почему мои сравнения всегда оказывались ложными. Я преобразовал свой строковый тип идентификатора сотрудника в BigDecimal, и это сработало.

person Derek    schedule 28.10.2011
comment
ТАК заставило меня ждать пару дней. Странно, что это явно требуется. Можно подумать, что Groovy позаботится об этом за вас. - person Derek; 31.10.2011