0

MyBatis マッパーに奇妙なエラーがあり、パラメーターが null かどうかを確認できますが、同じパラメーターの値を確認できません。

これが私のマッパーからの抜粋です:

<parameterMap id="OUTOCriteria" type="Map">
    <parameter property="name"          javaType="String" />
    <parameter property="parentOU"      javaType="Long" />
    <parameter property="type"          javaType="Integer" />
    <parameter property="statusTypeCurrent" javaType="Integer" />
</parameterMap>

その後、次のチェックを行います。

<if test="parentOU != null">
    <if test="parentOU.compareTo(new Long(1))">
        AND OU_STRC_ID ${parentOU.operator.sql} #{parentOU.value}
    </if>
</if>

最初のチェックではエラーはスローされませんが、ネストされたチェックでは次のエラーが表示されます。

org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression '!parentOU.compareTo(new Long(1))'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method "compareTo" failed for object parentOUEQUAL1 [java.lang.NoSuchMethodException: compareTo(java.lang.Long)] ### The error may exist in com/clearstream/iam/query/sqlmaps/OU.xml ### The error may involve ou.iamouDefaultQuery ### The error occurred while executing a query ### Cause: org.apache.ibatis.builder.BuilderException: Error evaluating expression '!parentOU.compareTo(new Long(1))'. Cause: org.apache.ibatis.ognl.MethodFailedException: Method "compareTo" failed for object parentOUEQUAL1 [java.lang.NoSuchMethodException: compareTo(java.lang.Long)]

Long パラメータの値をテストするための正しい構文は何ですか?

4

1 に答える 1

3

次のようなことを試してください:

<if test="parentOU != null and parentOU.longValue() == 1">
    AND OU_STRC_ID ${parentOU.operator.sql} #{parentOU.value}
</if>
于 2013-03-05T14:25:50.200 に答える