2015-08-29 54 views
0

我有一些麻煩搞清楚如何從一個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> 

我的問題似乎是與財產=「時間」 becaue我得到這個錯誤:

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> 
+0

喬達類是不可變的,他們沒有制定者。 – MirMasej

+0

公平......但我的編輯應該工作,而不是。 – mrkb80

+0

你有沒有考慮編寫自己的類型處理程序? –

回答

0

據我知道你需要使用你正在做一個類型處理器,但與設置爲每例如下面的屬性。

例如

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

我用這個github上項目作爲指導如何使用TypeResolver

+0

是啊...試過了,但沒有骰子。我還使用該github項目作爲我的指導。我最終創建了一個包裝類並使用了一個resultMap。作品,只是不如我想要的漂亮。 – mrkb80

+0

您應該在此處發佈您的解決方案,以便任何有此問題的人都可以解決它 – fillup

相關問題