无聊人士

搬家==》www.soapui.cn

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  32 随笔 :: 0 文章 :: 60 评论 :: 0 Trackbacks
最近在“玩”hibernate Annotation,弄了个Attachment保存进数据库的测试,附件内容保存在content属性里面。
  @Lob
  @Column(columnDefinition 
= "LongBlob")
  
public byte[] getContent() {
    
return content;
  }
一开始,配置mysql jdbc url如下
jdbc.url            =    jdbc:mysql://localhost/test\
                            ?useUnicode
=true\
                            &characterEncoding
=gbk
一测试,报错
Caused by: java.sql.BatchUpdateException: Syntax error or access violation message from server: "You have an error in your SQL syntax near ''D0CF11E0A1B11AE1000000000000000000000000000000003E000300FEFF0900060000000000000' at line 1"
    at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:
1540)
同样的语句,直接在mysql命令行下运行就没问题,偏偏jdbc上就有这臭毛病。换jdbc driver版本,改@Lob为 @Type(type = "org.springframework.orm.hibernate3.support.BlobByteArrayType"),改hibernate配置(比如hibernate.jdbc.use_streams_for_binary true),甚至是直接用jdbc来insert,乱七八糟折腾半天,问题照旧。最后只好用上“歪”招,把byte[]配成String,在保存的时候把byte[]保存成hex String格式,取的时候再解码回来。

歪招终归是歪招,这两天老为这东西心烦,晚上吃饭的时候无意中想起charset的问题,把代码捡回来再测试了一下,问题解决,哈哈!
jdbc.url            =    jdbc:mysql://localhost/mmwy_blog\
                            ?useUnicode
=true\
                            &characterEncoding
=utf-8
如果设成iso-8859-1、utf-8,保存一点问题都没有,换用gbk、gb2312、big5之类的字符集,问题就出来了。

posted on 2006-10-12 15:54 mmwy 阅读(1749) 评论(1)  编辑  收藏 所属分类: HibernateDatabase

评论

# re: mysql 3.23.58 charset设置对blob字段操作的影响 2008-12-19 15:40 赵客
太牛了,我也遇到这个问题了,弄了半天了,高手  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: