2007.01.31<o:p></o:p>
遇到一個問題,弄了一天了,終于發現了,現在寫出來,給大家共享。<o:p></o:p>
錯誤如下:<o:p></o:p>
2007-01-31 15:33:55,024 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] Destroying singletons in factory {org.springframework.beans.factory.support.DefaultListableBeanFactory defining beans [sleb,sessionFactory,transactionManager,proxyTemplate,riskDutyFactorService,riskDutyFactorDAO,riskDutyService,riskDutyDAO]; root of BeanFactory hierarchy}<o:p></o:p>
2007-01-31 15:33:55,024 ERROR [org.springframework.web.context.ContextLoader] Context initialization failed<o:p></o:p>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.ClassCastException: null<o:p></o:p>
java.lang.ClassCastException<o:p></o:p>
at org.hibernate.tuple.PropertyFactory.buildVersionProperty(PropertyFactory.java:81)<o:p></o:p>
at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:147)<o:p></o:p>
<o:p> </o:p>
從報錯來看,是出現了ClassCastException異常,主要是在解析hbm.xml檔案的時候,出現該異常的,由于到報錯資訊不熟悉,是以我就把檔案全部恢複到錯誤前的狀态,一個檔案一個檔案增加後判斷出來的,不過好的是判斷還是正确的。呵呵!下面是詳細的解釋。<o:p></o:p>
<o:p> </o:p>
以前定義的表格SQL語句如下,大家注意黃色部分<o:p></o:p>
create table risk<o:p></o:p>
(<o:p></o:p>
ID INTEGER not null,<o:p></o:p>
riskCode CHAR(10) not null,<o:p></o:p>
riskName VARCHAR(120) not null,<o:p></o:p>
version CHAR(10),<o:p></o:p>
riskType CHAR(16) not null,<o:p></o:p>
paymentType CHAR(20),<o:p></o:p>
launchTime DATE,<o:p></o:p>
circTime DATE,<o:p></o:p>
Actuary CHAR(16),<o:p></o:p>
language CHAR(1),<o:p></o:p>
useState CHAR(1) default '0',<o:p></o:p>
riskDutyID INTEGER,<o:p></o:p>
constraint P_risk primary key (ID)<o:p></o:p>
);<o:p></o:p>
則在hibernate中的映射檔案如下,大家注意黃色部分<o:p></o:p>
<hibernate-mapping><o:p></o:p>
<class name="com.sleb.po.Risk" table="RISK" schema="XFLIU"><o:p></o:p>
<id name="id" type="integer"><o:p></o:p>
<column name="ID" /><o:p></o:p>
<generator class="sequence" /><o:p></o:p>
</id><o:p></o:p>
<version name="version" type="string" column="VERSION" /><o:p></o:p>
<many-to-one name="riskduty" class="com.sleb.po.Riskduty" fetch="select"><o:p></o:p>
<column name="RISKDUTYID" /><o:p></o:p>
</many-to-one><o:p></o:p>
<property name="riskcode" type="string"><o:p></o:p>
<column name="RISKCODE" length="10" not-null="true" /><o:p></o:p>
</property><o:p></o:p>
<property name="riskname" type="string"><o:p></o:p>
<column name="RISKNAME" length="120" not-null="true" /><o:p></o:p>
</property><o:p></o:p>
<property name="risktype" type="string"><o:p></o:p>
<column name="RISKTYPE" length="16" not-null="true" /><o:p></o:p>
</property><o:p></o:p>
<property name="paymenttype" type="string"><o:p></o:p>
<column name="PAYMENTTYPE" length="20" /><o:p></o:p>
</