spring+hibernate保存blob字段
首先在spring的配置文件中加入以下代码:
<bean id="lobHandler" lazy-init="true">
并且将lobHandler加入到SessionFactory中去,即在
<bean id="mySessionFactory" >
...
中加入<property name="lobHandler" ref="lobHandler"></property>
...
</bean>关联起来,到这里spring里的配置已经完成.
第二步在生成xxx.hbm.xml文件后,对数据库里是blob类型的node,将其的type值改为"org.springframework.orm.hibernate3.support.BlobByteArrayType".(如果是CLOB的话则改为org.springframework.orm.hibernate3.support.ClobStringType
)再将xxx.java里相对应的属性类型改为byte[](如果是clob的话就改为String),重新生成set,get方法.
在java代码中只需要像平时那样就可以保存数据了.即getHibernateTemplate().save(bean);bean为Vo.
applicationContext.xml:
<bean id="lobHandler" lazy-init="true" />
xxx.hbm.xml
<property name="content" type="org.springframework.orm.hibernate3.support.BlobByteArrayType"> <column name="content" /> </property>
Vo
private byte[] content;public void setContent(byte[] content) {this.content = content;}public byte[] getContent() {return content;}public String getContentString(){if(content.length > 0)return new String(content,"GBK"); //或UTF-8elsereturn "";}?
?
1 楼 kevlin 2008-04-28 你好我想问你spring+hibernate保存blob字段可以插入数据库,可是怎么取出数据呢? 2 楼 tcrct 2008-04-30 保存到数据库里的是二进制数据,就按二进制的方法把数据取出来不就可以了吗?上网搜一下吧,会有很多的 3 楼 kevlin 2008-05-04 好多都是想文件,跟图片的处理啊。可是我的是是超过10000个字的中文啊。那要是处理。。 4 楼 tcrct 2008-05-06 在javabean里不是有一个getContentString()的方法吗?用这个就可以取你的中文字了.5 楼 kevlin 2008-05-16 getContentString()这个方法不行啊 ,不信你自己试试! 6 楼 xuyongping 2009-08-19 按照你的来怎么报这个异常啊,用的MySql:
java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required
at org.springframework.jdbc.support.lob.LobCreatorUtils.registerTransactionSynchronization(LobCreatorUtils.java:79)
at org.springframework.orm.hibernate3.support.AbstractLobType.nullSafeSet(AbstractLobType.java:185)
at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:169)