Oracle数据库中的的BLOB类型被Hibernate映射为String,当使用Hibernate 3.0 向Oracle的BLOB字段上传大数据时,使用“set”或“get”方法时,就会发生类型不匹配。网上这方面的内容找不到,请高手们帮忙。谢谢

解决方案 »

  1.   

    这个是我刚网上搜的,你看看把。
    其实就是blob数据不能简单String,他有自己的处理方法。
    http://hi.baidu.com/%C2%AB%D4%BD%B9%A4%D7%F7/blog/item/48812dde5f2a681562279818.html
      

  2.   

    谢谢。辛苦你了。根据你的网址,Hibernate映射文件中,找到的文章为:“hibernate对Blob类型字段进行数据添加”。在这个示例中,对Oracle的BLOB类型映射为:
    <property name="images" type="java.sql.Blob">
                <column name="images" />
            </property>而在MyEclipse中,使用Hibernate 3.0,会将Oracle中的BLOB字段映射为:String。这是什么原因。如果手工修改Hiberante的映射文件,会发生错误。有没有其他解决方法。谢谢。很急丫
      

  3.   

    我用的也是myEclipse使用也是Hibernate 3可以这样映射啊。
    我现在做的项目中上传公司图片也是这样设置的。Hibernate配置文件可以修改啊。没那么麻烦,有时候就的要去试试修改。
    要不那以后还要好多问题要修改配置呢。怎么就不能修改了呢?
      

  4.   

    Oracle的表定义有一个字段FILECONTENT,类型为BLOB。我重新在MyEclipse中使用Hibernate 3.0做了映射,映射文件中FILECONTENT的定义如下:
    <property name="filecontent" type="java.lang.String">
         <column name="FILECONTENT" />
    </property>还是将Oracle中的BLOB映射成了String。为什么呢?如果我手动修改Hibernate生成的hbm.xml映射文件,即将type="java.lang.String"改变成type="java.lang.Blob"(也相应地修改了其它文件),则Hibernate不能连接数据库,Session创建错误。很急丫,弄了好长时间了,帮帮忙帮帮忙。
      

  5.   

    你可以用Oracle最新的ojdbc.jar,直接用string就可以了
      

  6.   

    谢谢thuiones,我使用Oracle的ojdbc14.jar,Hibernate对Oracle中的BLOB还是生成String。你说直接使用String就行,那如何上传大数据到BLOB中呢?能不能来段完整的示例,非常感谢!
      

  7.   

    郁闷啊,我这两天也在研究这个问题:在pojo文件里将BLOB字段定义为byte[],在hbm.xml文件中定义为:type="org.springframework.orm.hibernate3.support.BlobByteArrayType"  功能运行时会报错
      

  8.   

    http://iceland1986.blog128.fc2.com/blog-entry-3.html
    这个是我做的例子。你可以上去看看。BLOB到了JAVA里是对应BYTE[]的。