in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/support/HibernateRuntimeUtils.groovy [116:150]
static Object convertValueToType(Object passedValue, Class targetType, ConversionService conversionService) {
// workaround for GROOVY-6127, do not assign directly in parameters before it's fixed
Object value = passedValue
if(targetType != null && value != null && !(value in targetType)) {
if (value instanceof CharSequence) {
value = value.toString()
if(value in targetType) {
return value
}
}
try {
if (value instanceof Number && (targetType==Long || targetType==Integer)) {
if(targetType == Long) {
value = ((Number)value).toLong()
} else {
value = ((Number)value).toInteger()
}
} else if (value instanceof String && targetType in Number) {
String strValue = value.trim()
if(targetType == Long) {
value = Long.parseLong(strValue)
} else if (targetType == Integer) {
value = Integer.parseInt(strValue)
} else {
value = StringGroovyMethods.asType(strValue, targetType)
}
} else {
value = conversionService.convert(value, targetType)
}
} catch (e) {
// ignore
}
}
return value
}