Récupérer un blob à partir de la base de données comme un byte[] à l'aide de myBatis
Je suis à l'aide de printemps MyBatis 1.2.0 dans un projet, où j'ai une requête qui récupère les données d'un champ BLOB dans une base de données Oracle 11g. Je veux récupérer le terrain comme un tableau d'octets (byte[]), mon Code est:
<select id="getResponse" resultType="_byte[]" parameterType="string">
select blob_Data from Table where id = #{value,jdbcType=VARCHAR} AND ROWNUM = 1
</select>
C'est donner de message d'erreur suivant:
java.lang.ClassCastException: [B incompatible with [Ljava.lang.Object;
at org.apache.ibatis.binding.MapperMethod.convertToArray(MapperMethod.java:136)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:119)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:58)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:43)
En dehors de cela, j'ai aussi essayé d'utiliser resultMap:
<resultMap id="responseMap" type="ResponseMessageModel">
<result property="blobData" column="blob_Data"/>
</resultMap>
<select id="getResponse" resultMap="responseMap" parameterType="string">
select blob_Data from table where id = #{value,jdbcType=VARCHAR} AND ROWNUM = 1
</select>
et de préciser la javaType:
<resultMap id="responseMap" type="ResponseMessageModel">
<result property="blobData" javaType="_byte[]" column="blob_Data"/>
</resultMap>
<select id="getResponse" resultMap="responseMap" parameterType="string">
select blob_Data from table where id = #{value,jdbcType=VARCHAR} AND ROWNUM = 1
</select>
mais avec pas de chance, donnent tous le même ClassCastException
Quelqu'un pourrait s'il vous plaît dites-moi ce que je fais de mal?
OriginalL'auteur Sumit | 2015-02-23
Vous devez vous connecter pour publier un commentaire.
Essayez de spécifier un JDBC de type dans votre suite carte:
Ici un exemple de Camunda BPM:
La cartographie avec le résultat de la carte "resourceResultMap", qui contient des octets de la propriété
Entité avec d'octets (byte[]) champ
Edit:
Si elle ne fonctionne pas, veuillez jeter un oeil à la suite question. Il suggère d'utiliser des BINAIRE que JDBC de type ou d'utiliser un type de gestionnaire dans l'acceptation de réponse.
OriginalL'auteur gclaussn
Donc, j'ai obtenu ce travail en faisant les changements suivants dans mon code-
Je suis à l'aide d'un resultMap et spécifié les deux javaType et jdbcType:
En faisant cela, je suis en mesure de parvenir à récupérer la valeur de l'objet BLOB comme un byte[].
OriginalL'auteur Sumit