運行程序報錯:
Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxxxDao' defined in file [D:\WorkSpace\xxx\xxx\webapp\WEB-INF\classes\com\xxx\xxx\xxx\config\spring-webmanage.xml]: Cannot resolve reference to bean 'sessionFactory' while
setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL [jar:file:/D:/WorkSpace/xxx/xxx/webapp/WEB-INF/lib/xxx.jar!/spring-base.xml]:
Invocation of init method failed; nested exception is org.hibernate.MappingException:composite-id class must implement Serializable: com.xxx.xxx.xxx.pojo.Organization
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
……
這一段中,最重要的錯誤提示是“composite-id class must implement Serializable: ”
是因爲在映射文件.hbm.xml中定義爲聯合主鍵,即用<composite-id>
<key-property name="pid" type="java.lang.String">
<column name="PID" />
</key-property>
<key-property name="cid" type="java.lang.String">
<column name="CID" />
</key-property>
</composite-id>
解決辦法:
使用聯合主鍵時,bean類必須序列化
import java.io.Serializable;
public classBean implements Serializable {
private static final long serialVersionUID = 1L;
}