Как я могу получить bytea из байтового столбца с MyBatis? - PullRequest
2 голосов
/ 16 декабря 2011

Я попробовал следующий способ.

Вот отображение запроса:

<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);

А вот и ошибка Iполучил, пытаясь запустить модульный тест против него:

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

Более того, метод установки для этого персонала байтов в порядке.

Ответы [ 2 ]

2 голосов
/ 16 декабря 2011

Сообщение об ошибке говорит, что проблема довольно хорошо. На java.lang.Byte.

нет конструктора по умолчанию.

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

0 голосов
/ 05 декабря 2018

сначала получить Object вместо byte[]

public Object getTypicalTaskMeasurementParameterValue(
    Integer typicalTaskMeasurementId
);

Затем изменить Object на byte[].

...