java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction
1.如果我们需要操作图片等二进制数据那么我们就使用clob,hibernate的实体映射文件配置
<property name="image" type="org.springframework.orm.hibernate3.support.BlobByteArrayType">
<column name="image" />
</property>
2.hibernate的实体属性
private byte[] image;
3.在spring的配置文件里面配置这样几项配置
<!-- 读写lob字段 处理大型大块数据,这项配置可以不要
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" lazy-init="true"/>
-->
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="lobHandler" ref="lobHandler"></property><!-- 读写lob字段 处理大型数据的必须配置-->
<!--如果去掉lobHandler这项配置那么你的程序就会报没有配置lobHandler,错误提示 No LobHandler found for configuration- lobHandler property must be set on LocalSessionFactoryBean
java.lang.IllegalStateException: No LobHandler found for configuration - lobHandler property must be set on LocalSessionFactoryBean
at org.springframework.orm.hibernate3.support.AbstractLobType.nullSafeSet(AbstractLobType.java:174)
at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:140)
......等
-->
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
4.我们只要调用hibernate的save(obj)方法就可以保持包含大字段的实体了
如session.save(person)
5.在操作大字段的时候一定要在事务的管理下进行,不然会包这个错误
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)
......等
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。