2011-12-16 59 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

相关问题