当我向Grails动态查找器提供错误的类型时,我对发生的事情感到有点困惑。
例如,如果我有课程Foo
class Foo {
//long id (implicit id is a long)
Long barValue
}
我这样做,Foo.findByIdAndBarValue('1', '2')
,我得到了一个结果,但我对这里的字符串值感到困惑。
是否将这些字符串值直接传递给db(由于类型不匹配而可能忽略有价值的索引),或Grails是否自动转换类型?
答案 0 :(得分:1)
将参数传递给Grails域类的动态查找器时,会动态输入参数。这允许Groovy进行自动类型转换。
在您的示例中,Groovy发现barValue的类型为Long,并且将String值转换为Long。
JN3015-Types通过一些示例进一步解释了Groovy的这种行为。