2013-03-05 2 views
0

У меня есть странная ошибка в MapBaris Mapper, где я могу проверить, является ли параметр нулевым, но я не могу проверить значение того же параметра;Проверить значение в MyBatis mapper

Вот отрывок из моего картографа:

<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?

ответ

3

Попробуйте что-то вроде этого:

<if test="parentOU != null and parentOU.longValue() == 1"> 
    AND OU_STRC_ID ${parentOU.operator.sql} #{parentOU.value} 
</if> 
+0

Я попытался '<если тест = "parentOU.value == 1">' и он работал. Сумасшедшая вещь заключается в том, что она работает ТОЛЬКО, если я явно использую '# {parentOU.value}' в инструкции. Если я этого не сделаю, произойдет ошибка. – Lupuss

+0

Я думаю, что это потому, что объект Long сложнее, попробуйте использовать int или long primitive – Vargan

Смежные вопросы