Velocityで数値の比較を行う際は、両辺の型が同じでなければいけません。
$!result.Idがlongの値を返すとき下記のように比較を行うと、Error in evaluation of == expression.とエラーがログに出力されます。
#if($!result.Id==10) #elseif($!result.Id > 10) #else #end
これはVelocityで数値はIntegerで扱われるためです。 もし$!result.Idが10または20だとしても条件式は常にfalseを返すためelse文の処理を行います。
そのためvelocityで数値の比較を行う際は変数のほうをIntegerに変換して比較する必要があります。