整合struts,spring,hibernate你都犯过哪些错?
在整合spring,struts,hibernate框架时,犯了很多错,在解决了之后,现在再回头看自己整理的一些东西,倍感欣慰。不知道大家在整合ssh框架时都遇到过哪些问题,呵呵,写出来和大家分享一下,希望有所帮助。
1.Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext导入spring-hibernation.jar bao
2.Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)删除asm_2.3.jar
3.类名 is not mapped. (某个类没有映射)-------------->hql语句关于表名大小写错误
4.failedtolazilyinitializeacollectionofrole:com.stuclazz.entity.Clazz.students-nosessionorsessionwasclosed
即延迟加载错误,解决方法一:设置lazy=false
解决方法二:在web.xml中配置过滤器,代码如下
<filter>
<filter-name>myOpenSessionFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>myOpenSessionFilter</filter-name>
r remove 'readOnly' marker from transaction definition5.Writeoperationsarenotallowedinread-onlymode(FlushMode.NEVER)-turnyourSessionintoFlushMode.AUTOorremove'readOnly'markerfromtransactiondefinition
解决方法为:在添加时写上this.getHibernateTemplate().setFlushMode(2);6.No bean specified ,解决方法为:在一对多的关系中,关于多的一方的实体类中对应的一的一方,未实例化。此时,只需实例化即可。
7.Unabletoloadconfiguration.-bean-jar:file:/C:/Tomcat%206.0/webapps/S2SH/WEB-INF/lib/struts2-core-2.1.6.jar!/struts-default.xml:68:140
在struts.xml中,引用的配置文件有误!应该是2.1版本的.例如:<!DOCTYPE struts PUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>8.Error creating bean with name 'sessionFactory' defined in class path resource [spring.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext
解决方法:导入hibernate3.jar 覆盖之前的就可以了!
9. parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
解决方法:applicationContext.xml配置文件存在的位置找不到,将其移到src目录下即可,默认的classPath目录下,即在src目录下
10.No action instance for path /book could be created
(好久没整合ssh框架了,在整合s1sh框架时所遇到的问题,出现的原因是:在struts-config.xml文件中没有配置controller元素,即没有通知struts将拦截的请求交给spring context下的bean,所以在bean中配置的请求路径不能被创建!做如下配置即可:)
<controllerprocessorclass="org.springframework.web.struts.DelegatingRequestProcessor">
</controller>11.java.lang.IllegalArgumentException: No bean specified
(没有bean被指定,在s1sh整合中,在form中构造实体的实例即可,即必须使用new实例)
12.Errorcreatingbeanwithname'sessionFactory'definedinclasspathresource[applicationContext.xml]:Invocationofinitmethodfailed;nestedexceptionisorg.hibernate.MappingException:entityclassnotfound:com.scce.TbBookInfo
atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336)
解决方法:重新使用hibernate reverse 生成一遍实体类,选对路径!13.org.springframework.dao.InvalidDataAccessResourceUsageException: could not update: [com.scce.entity.TbBookInfo#9]; nested exception is org.hibernate.exception.DataException: could not update: [com.scce.entity.TbBookInfo#9]
现象描述:控制台将update语句打出,没问题。
解决方法:数据库中的字段容量设计的太小了。。。 亦或是,将插入数据的字段长度改小即可。犯了一些很低级的错误,让大家见笑了。