2011-12-16 1853 views
2

我嘗試了以下方法。如何使用MyBatis從bytea列獲取byte []?

下面是該查詢映射:

<select id="getTypicalTaskMeasurementParameterValue" 
      parameterType="Integer" 
      resultType="byte[]"> 
    SELECT value 
    FROM typical_task_measurements_parameter_values 
    WHERE id_typical_task_measurement = #{typicalTaskMeasurementId} 
</select> 

這裏是方法:

public byte[] getTypicalTaskMeasurementParameterValue(
    Integer typicalTaskMeasurementId); 

,這裏是我的錯誤,試圖對它運行單元測試:

nested exception is org.apache.ibatis.reflection.ReflectionException: 
Error instantiating class [Ljava.lang.Byte; with invalid types() or values(). 
Cause: java.lang.NoSuchMethodException: [Ljava.lang.Byte;.<init>() 
at ... 

此外,這個bytea職員的setter方法是好的。

回答

2

錯誤消息說問題很好。 java.lang.Byte上沒有默認構造函數。

您需要一個結果映射來選擇要使用的構造函數,還是實現您自己的TypeHandler。

+0

非常感謝。這很糟糕,這種常見的情況讓我寫了自定義處理程序,但在我的特殊情況下,可能它甚至是好的,因爲此列中有JSON數據。所以,我會檢查這個解決方案並批准你的答案。 – 2011-12-17 08:24:20