liferay 4.2.1在oralce上运行时,clob字段总会抛出 ORA-01461 错误。
解决此问题的方法:
1.portal-ejb.jar包查找META-INF/portal-hbm.xml, 将所有clob字段的配置类型修改为org.springframework.orm.hibernate3.support.ClobStringType(原来为com.liferay.util.dao.hibernate.StringType)。
2.修改counter-ejb.jar包里面的counter-spring-professional.xml文件,添加如下内容:
<bean id="lobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor">
<ref bean="nativeJdbcExtractor"/>
</property>
</bean>
<bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>
<bean id="liferaySessionFactory" class="com.liferay.portal.spring.hibernate.HibernateConfiguration" lazy-init="true">
<property name="lobHandler" ref="lobHandler"/>
<property name="dataSource">
<ref bean="liferayDataSource" />
</property>
</bean>
并把原来的配置liferaySessionFactory 删除。
解决此问题的方法:
1.portal-ejb.jar包查找META-INF/portal-hbm.xml, 将所有clob字段的配置类型修改为org.springframework.orm.hibernate3.support.ClobStringType(原来为com.liferay.util.dao.hibernate.StringType)。
2.修改counter-ejb.jar包里面的counter-spring-professional.xml文件,添加如下内容:
<bean id="lobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor">
<ref bean="nativeJdbcExtractor"/>
</property>
</bean>
<bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>
<bean id="liferaySessionFactory" class="com.liferay.portal.spring.hibernate.HibernateConfiguration" lazy-init="true">
<property name="lobHandler" ref="lobHandler"/>
<property name="dataSource">
<ref bean="liferayDataSource" />
</property>
</bean>
并把原来的配置liferaySessionFactory 删除。