Возвращение Йода DateTime вне класса

У меня возникли проблемы с выяснением того, как вернуть один DateTime из SQL-запроса, используя mybatis:

Соответствующая часть моего интерфейса:

DateTime getMinActual(@Param("IDs") List<Integer> IDs);

Соответствующая часть моего картографа xml:

<resultMap id="dtt" type="org.joda.time.DateTime">
    <result column="dt" property="time" javaType="org.joda.time.DateTime" jdbcType="TIMESTAMP" typeHandler="org.joda.time.mybatis.handlers.DateTimeTypeHandler" />
</resultMap>

<select id="getMinActual" resultMap="dtt">
select min(cast(case when [quarter]=1 then '1/' when [quarter]=2 then '4/' when [quarter]=3 then '7/' else '10/' end + '1/' + cast([year] as varchar) as datetime))  as dt
from 
Ops where id in
  <foreach item="IDs" index="index" collection="IDs"
    open="(" separator="," close=")">
    #{IDs}
    </foreach>
</select>

Моя проблема, кажется, со свойством = время, потому что я получаю эту ошибку:

org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'time' in 'class org.joda.time.DateTime'

Я пробовал все разные имена свойств, такие как DateTime, datetime, dateTime, org.joda.time.DateTime и т.д.... все с той же ошибкой.

Есть идеи?

Обновление, как указано, JodaTime является неизменным, но тогда это должно работать:

<resultMap id="dtt" type="org.joda.time.DateTime">
  <constructor>
    <idArg column="dt" javaType="org.joda.time.DateTime" typeHandler="org.joda.time.mybatis.handlers.DateTimeTypeHandler" />
  </constructor>
</resultMap>

1 ответ

Насколько я знаю, вам нужно использовать обработчик типа, как вы делаете, но со свойством, установленным в соответствии с приведенным ниже примером.

например

<idArg column="dt" property="dt" javaType="org.joda.time.DateTime" typeHandler="org.joda.time.mybatis.handlers.DateTimeTypeHandler"/>

Я использовал этот проект GitHub в качестве руководства о том, как использовать TypeResolver

Другие вопросы по тегам