spring.hibernate操作oracle Clob异常

numen_wlm 2005-09-21 05:32:05
我按照网上所说的配置的,hbm.xml中对应数据库的clob字段的类型用org.springframework.orm.hibernate.support.ClobStringType
在测试时报如下异常:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext-hibernate.xml]: Initialization of bean failed; nested exception is org.hibernate.MappingException: Could not determine type for: org.springframework.orm.hibernate.support.ClobStringType, for columns: [org.hibernate.mapping.Column(NOTETEXT)]
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:341)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:222)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:146)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:271)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:319)
org.springframework.web.context.support.AbstractRefreshableWebApplicationContext.refresh(AbstractRefreshableWebApplicationContext.java:131)
org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:230)
org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:156)
org.springframework.web.context.ContextLoaderServlet.init(ContextLoaderServlet.java:81)
javax.servlet.GenericServlet.init(GenericServlet.java:211)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
org.apache.commons.digester.Rule.end(Rule.java:276)
org.apache.commons.digester.Digester.endElement(Digester.java:1058)
org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:76)
org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
org.apache.commons.digester.Digester.parse(Digester.java:1567)
org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:483)
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
org.apache.catalina.startup.HostConfig.start(HostConfig.java:983)
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:349)
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
org.apache.catalina.startup.Catalina.start(Catalina.java:556)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:324)
org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:287)
org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:425)

...全文
278 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
llike_1983 2005-09-25
  • 打赏
  • 举报
回复
mxlmwl 2005-09-23
  • 打赏
  • 举报
回复
给你回信了。
mxlmwl 2005-09-23
  • 打赏
  • 举报
回复
把你的demo发过来给我看看,你贴的不全,我也不好猜。本来程序这东西有一点错了都有可能跑不起来的。
giginet@163.com
numen_wlm 2005-09-23
  • 打赏
  • 举报
回复
to:mxlmwl(飞星)

我按你说的改了还是不对
另外,我用的是hibernate3
xuyisun 2005-09-23
  • 打赏
  • 举报
回复
你看看你的 bean.xml中
<constructor-arg index="2"><value>1</value></constructor-arg> </bean>......

注意index="2"一定要有,如果去掉的话就会出现你报的错

原因:这个参数是一个整数,但是BeanFactory把它当作一个String来处理,所以在这个xml中
显然是不合乎逻辑的。如果出现原始类型的话,将推荐在这个参数里面加入index属性,标记是
哪一个参数。
更具体的说:
比如在创建MyClass(bool flag,String toto,int moo,float cow)的时候,这里没有办法来告诉
BeanFactory每一个字符串代表的是哪一个参数。

不过如果使用了index属性则位置就没有关系了。
比如

<constructor-arg index="2"><value>1</value></constructor-arg> <constructor-arg><ref bean="anotherExampleBean"/></constructor-arg> <constructor-arg><ref bean="yetAnotherBean"/></constructor-arg>



llike_1983 2005-09-23
  • 打赏
  • 举报
回复
我已经把DD发到你邮箱里了,请多多帮忙,我已经搞了好几天了
mxlmwl 2005-09-22
  • 打赏
  • 举报
回复
不,9i的版本驱动也好几个的,版本必须要高才行。你直接拷贝oracle安装目录下的那个驱动是没用的,那个不是最新的包。我是从oracle网站上下的。

不过看你的情况似乎不是驱动包的问题,错误日志里没有一点和oracle有关的东西,还是应该是你配置错误。你的这个类型对应的数据库的字段是clob吗?看样子是hibernate在ORM绑定的时候出现错误,这个类型没有和指定字段对应上所导致的,检查一下你这块的配置文件,或者贴出来看看。
llike_1983 2005-09-22
  • 打赏
  • 举报
回复
顶!!!
numen_wlm 2005-09-22
  • 打赏
  • 举报
回复
高手回答啊!!!
mxlmwl 2005-09-22
  • 打赏
  • 举报
回复
我在你的配置文件里没有发现对org.springframework.orm.hibernate.support.ClobStringType的映射啊,估计是你下面这句弄错了。
<property name="notetext" column="NOTETEXT" type="java.sql.Clob" length="1000000000"/>

这里的不是java.sql.Clob,而应该是org.springframework.orm.hibernate.support.ClobStringType。同时注意,notetext这个属性在pojo中应该是String类型。
numen_wlm 2005-09-22
  • 打赏
  • 举报
回复
to:mxlmwl(飞星)
以上是配置文件部分内容。请帮忙看下,谢谢!
llike_1983 2005-09-22
  • 打赏
  • 举报
回复
application-hibernate里的配置:

<bean id="oracleLobHandle" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
<property name="nativeJdbcExtractor">
<ref local="nativeJdbcExtractor"/>
</property>
</bean>-->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="LobHandle">
<ref bean="oracleLobHandle">
</property>

<property name="mappingResources">
<list>
<value>cn/cityyouth/entity/CoreUserbasicinfo.hbm.xml</value>
<value>cn/cityyouth/entity/CoreUserdetailinfo.hbm.xml</value>

<value>cn/cityyouth/entity/CoreUsersrctype.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsBasicaction.hbm.xml</value>
<!--longxi -->
<value>cn/cityyouth/bbs/entity/BbsModule.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsNotestatuspic.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsPicture.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsSendnote.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsUploadfile.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsUploadheadpicture.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsUserlevelpic.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsBallot.hbm.xml</value>
<!-- zhanghongbin -->
<value>cn/cityyouth/bbs/entity/BbsLoginfo.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsLogtype.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsNoteinfo.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsUsergradepopedom.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsUsergradeinfo.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsGradepopedom.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsUserinfo.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsAdminfo.hbm.xml</value>
<value>cn/cityyouth/bbs/entity/BbsUserpopedom.hbm.xml</value>
<!-- liao kai-->
<value>cn/cityyouth/bbs/entity/BbsVote.hbm.xml</value>


<value>cn/cityyouth/entity/CoreSysinfo.hbm.xml</value>


</list>
</property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<!-- Create/update the database tables automatically when the JVM starts up
<prop key="hibernate.hbm2ddl.auto">update</prop> -->
<!-- Turn batching off for better error messages under PostgreSQL
<prop key="hibernate.jdbc.batch_size">0</prop> -->
<prop key="hibernate.jdbc.batch_size">15</prop>
</props>
</property>
</bean>

hbm.xml里的配置:
<hibernate-mapping package="cn.cityyouth.bbs.entity">

<class name="BbsSendnote" table="BBS_SENDNOTE">
<id name="noteid" column="NOTEID" type="java.lang.Long">
<generator class="sequence">
<param name="sequence">seq_sendnote</param>
</generator>
</id>

<property name="subject" column="SUBJECT" type="java.lang.String" />
<property name="useremail" column="USEREMAIL" type="java.lang.String" />
<property name="notetext" column="NOTETEXT" type="java.sql.Clob" length="1000000000"/>
<property name="senddate" column="SENDDATE" type="java.util.Date" />
<property name="moduleid" column="MODULEID" type="java.lang.Long" />
<property name="notestatus" column="NOTESTATUS" type="java.lang.Byte" />
<property name="noteupid" column="NOTEUPID" type="java.lang.Long" />
<property name="rasestatus" column="RASESTATUS" type="java.lang.Byte" />
<property name="subjecttype" column="SUBJECTTYPE" type="java.lang.String" />
<property name="heartpic" column="HEARTPIC" type="java.lang.String" />
<property name="facepic" column="FACEPIC" type="java.lang.String" />
<property name="answernum" column="ANSWERNUM" type="java.lang.Short" />
<property name="countbrowse" column="COUNTBROWSE" type="java.lang.Short" />
<property name="risedate" column="RISEDATE" type="java.util.Date" />
<set name="ballot" table="BBS_BALLOT" cascade="all" lazy="true" inverse="true" order-by="ballotid desc">
<key> <column name="NOTEID"></column></key>
<one-to-many class="cn.cityyouth.bbs.entity.BbsBallot"/>
</set>
</class>

</hibernate-mapping>

我的数据库的字段就是clob啊
numen_wlm 2005-09-21
  • 打赏
  • 举报
回复
看了一下,这个文件的确是存在的,驱动也存在,版本就是9i的
mxlmwl 2005-09-21
  • 打赏
  • 举报
回复
org.springframework.orm.hibernate.support.ClobStringType这个类型装载失败,
1。先去你的spring中确认这个文件是否存在。
2。最有可能的地方
你的oracle的jdbc驱动包是否存在,如果存在的话,还报错,说明你的驱动版本不对,好象是要9.0.2以上才可以。如果你使用oracle8i的话,也是不可以的,必须是9i才行。

classes12-9i.jar在oracle网站上就可以找到。
numen_wlm 2005-09-21
  • 打赏
  • 举报
回复
另外有谁知道oracle 的classes12-9i.jar这个包哪里有下载的?我搜了都没搜到.

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧