* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit | |
최신 | |
[도움말]-[버전정보] 확인 | |
java, mybatis |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요.
큐브리드로 DB를 공부하고 있는 학생입니다.
Mybatis를 이용하여 이미지를 blob로 DB에 저장하고 싶은데
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: cubrid.jdbc.driver.CUBRIDException: CASID[1],CASPID[5656],SESSION[301],URL[jdbc:cubrid:localhost:33000:test:dba:********:?charset=utf-8]
Semantic: Cannot coerce host var to type blob.
### The error may involve .insert-Inline
### The error occurred while setting parameters
### SQL: insert into test_blob values (?, ?)
### Cause: cubrid.jdbc.driver.CUBRIDException: CASID[1],CASPID[5656],SESSION[301],URL[jdbc:cubrid:localhost:33000:test:dba:********:?charset=utf-8]
Semantic: Cannot coerce host var to type blob.
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:23)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:150)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:137)
이런 종류의 에러 메시지가 나오는데 해결책을 못 찾겠어서 글을 올립니다.
mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
<insert id="insert" parameterType="mybatis.BlobRecord">
insert into test_blob values (#{id}, #{blobs})
</insert>
</mapper>
BlobReord.java
public class BlobRecord {
private int id;
private byte[] blobs;
public BlobRecord(int id, byte[] blob) {
super();
this.id = id;
this.blobs = blob;
}
public BlobRecord(int id, Byte[] blob) {
super();
this.id = id;
final byte[] newBytes = new byte[blob.length];
for (int i = 0; i < blob.length; i++) {
Byte b = blob[i];
newBytes[i] = b;
}
this.blobs = newBytes;
}
public int getId() {
return id;
}
public byte[] getBlobs() {
return blobs;
}
}
바이트가 Blob로 안바뀌어서 그러는 건지.. 알려주시면 감사하겠습니다!