hibernate使用之:处理clob类型
参见原文:http://wangrui.iteye.com/blog/178924。
我的处理方法如下:
一、Model中的数据成员类型为String,映射的数据库字段类型为org.springframework.orm.hibernate.support.ClobStringType
/**
* 电影信息Model
*/
@Entity
@Table(name = "BK_CTT_MOVIE")
@SuppressWarnings("serial")
public class MovieModel extends BaseModel implements Serializable {
@Id
private long id;
@Column(name = "STARS")
@Type(type="org.springframework.orm.hibernate3.support.ClobStringType")
private String stars;
....get/set方法
}
二、如果使用spring的这个clob类型就需要在applicationContext.xml中的sessionFactory里修改如下配置
<bean id="oracleLobHandler"
class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true">
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor" />
</bean>
<bean id="nativeJdbcExtractor"
class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor"
lazy-init="true" />
<!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
<property name="hibernateProperties">
<value>
hibernate.dialect=${hibernate.dialect}
hibernate.query.substitutions=true 'Y', false 'N'
hibernate.show_sql=true
hibernate.cache.use_second_level_cache=true
hibernate.cache.use_query_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.jdbc.batch_size=50
hibernate.jdbc.use_streams_for_binary=true
</value>
<!-- Turn batching off for better error messages under PostgreSQL -->
<!-- hibernate.jdbc.batch_size=0 -->
</property>
<property name="lobHandler" ref="oracleLobHandler" />
</bean>
三、第三步没有修改为使用oci10,依然使用jdbc:oracle:thin连接方式。使用noticeManager.save(notice);
即可以正常保存的。