ssh整合bug

 

异常:

Org.hibernate.lazyinitializationException:could not initialize proxy –no session

这是延迟加载的一个问题,主要原因是service层在开启事务后经过Dao的查询的对象是代理的对象且没有实际参数,只有在使用时才会帮我初始化对象。此时事务提交后session被销毁,而web端得到的是该代理对象,如果此时去初始化对象时会抛出以上异常,因为该对象此时处于游离态。

ssh几个bug整合集(一)

解决:

  1. 不使用延迟加载
  2. 手动将延迟加载初始化 Hibernate.initialize(延迟对象)

   3.使用spring提供的一个OpenSessionInViewFilter来解决(推荐)

在web.xml中配置一个filter

  ssh几个bug整合集(一)

 

异常:

不能实例化一个action   没有在namespace下发现某个方法。。。。。

分析:此种异常可能是注解开发时,在向目标类注入是出现异常,导致注入失败,抛出此异常。

如向一个action注入一个service 属性时,service类有代码错误或异常(如service没有写入注解代码====)那么,service就会注入失败,此时会导致抛出此异常。

 

异常:

如果一直提示spring的事务处于read-only状态

分析:查看 pointcut配置是否正确(如execution的包名是否正确,表达式是否正确) ,错误会导致无法拦截具体方法,否则就会走默认的事务,出现以上错误

异常:

如果提示某注入对象无法读取,无法注入,

分析:查看applicationContext.xml中的对应注入名称是否与set方法和变量名相同

如:

Applicationcontext.xml如下:

<bean id="userService"class="cn.itheima.service.UserServiceImpl">
    <property name="userDao" ref="userDao" />
</bean>

Service对应的代码如下:就会导致以上错误

ssh几个bug整合集(一)

异常: 

mawen整合下 tomcat启动失败。报tomcat   catalina异常

分析:

ssh几个bug整合集(一)

 

 

配置对应的scope的例外。

 

异常:

抛出    hibernate mapped    异常

分析:检查hibernate   HQL语句,(如  from  user之类的   因为HQL语句是面向对象的 ,而对应的PO类是User,因此会抛出from user找不到mapped )

 

异常:

    Mawen抛出子模块的bean文件找不到undefined

分析:

    此异常可能是拆分applicationContext.xml文件后,web.xml文件中引入contextConfigLocation属性没有使用通配符导致找不到对应xml文件。

ssh几个bug整合集(一)

异常:启动tomcat时抛出Could not find artifact 父项目

ssh几个bug整合集(一)

分析:启动有依赖的项目时,必须将被依赖的项目安装到本地仓库。使用  mawen.install

异常:

Oracle进程TNSLSNR.EXE (PID:5848)占用8080端口

解决:使用sqlplus 登陆oracle  输入以下命令:

-- 把HTTP/WEBDAV端口从8080改到8081 
SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), 
'/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()',8081)) 
/

-- 把FTP端口从2100改到2111 
SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), 
'/xdbconfig/sysconfig/protocolconfig/ftpconfig/ftp-port/text()',2111)) 
/ 
SQL> commit; 
SQL> exec dbms_xdb.cfg_refresh; 
-- 检查修改是否已经成功 
SQL> select dbms_xdb.cfg_get from dual;

异常:

Spring整合在单独对dao模块使用Test测试时,为保证不报错,需要在测试方法上加一个事务@Transaction(正式代码加在service上),但此时会导致测试完成后 会对事务进行回滚,引发操作成功但数据库数据无改变。(如图)

 

ssh几个bug整合集(一)

解决:

    才测试类的@Transaction 后面加一条阻止回滚的注解 @Rollback(false)

异常:

    使用springDate findAll和pageRequest 进行分页查询时  查询无结果或结果不对

分析:

    在pageable的实现pageRequest中,其默认的page参数是从0开始,而easyUi中的数据表发送是从1开始,故出现此情况解决如图

ssh几个bug整合集(一)

异常:

    注意,mawen项目下,经常会出现各种错误,比如所有包莫名失效,或者其实修改正确,但还是会报错,可能就是我们的mawen缓存问题刷新下项目即可。

异常:

    代码如下:

ssh几个bug整合集(一)

ssh几个bug整合集(一)

 

 

分析:struts2在做AJAX的响应时,不需要location,否则会导致以上错误。原因可能在location做出响应后,valueStack生命周期结束,而struts2中默认将值栈栈顶数据转换,导致空指针异常。

异常:

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.

(分析):这个异常产生的主要原因是DAO采用了Spring容器的事务管理策略,如果操作方法的名称和事务策略中指定的被管理的名称不能够匹配上,spring 就会采取默认的事务管理策略(PROPAGATION_REQUIRED,read only).如果是插入和修改操作,就不被允许的,所以报这个异常

(解决):整合时如果不启用事务也会导致采用默认事务级别,此时如果使用数据库的增删操作是不被允许的

异常:

ssh几个bug整合集(一)

解决:spring与hibernate3||4整合时会出现以上异常 也有可能是导入了错误版本的hibernate如下在继承hibernateDaoSupport时导入错误包

ssh几个bug整合集(一)

 

异常:

sessionFactory is defind(一般在解决弄session时配置opensessioninviewfilter后出现。)

ssh几个bug整合集(一)

解决:

原因1:

是OpenSessionInViewFilter这个类中有个属性叫 sessionFactoryBeanName默认值为sessionFactory,而applicationContext.xml的配置文件中SessionFactory不叫这个名字,修改名字后正常。

ssh几个bug整合集(一)

原因2:如Spring整合JPA的时候使用spring整合hibernate的filter,spring整合JPA filter配置如下

ssh几个bug整合集(一)

 转载自:https://www.cnblogs.com/learnjfm/p/7226183.html

--------------------------------------------我是分割线---------------------------------------

1Hibernate自动生成的配置文件 hibernate.cfg.xml 有时候是有问题的,会出现

org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml

原因是自动生成的hibernate.cfg.xml第二个标签引号内容的最末尾有一个空格,删掉即可

<!DOCTYPE hibernate-configuration PUBLIC

          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd ">

 

2使用spring 3.x的时候最好使用hibernate3.x版本,不要使用4.1,否则可能也会出现下面的错误。

 

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in file [E:\Workspaces\MyEclipse 10\Spring&Hibernate\src\applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.ExceptionInInitializerError

 

 

3Exception starting filter struts2
Unable to load configuration. - bean - jar:file:/D:/Tomcat 5.5/webapps/LoginWeb/WEB-INF/lib/struts2-core-2.1.2.jar!/struts-default.xml:46:178
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:58)
....形如这样的一个错误,提示找不到struts-default.xml文件

 

原因是

<action name="login.action" class="org.action.LoginAction">中之前是class=login,本想通过spring注入的。但是这里报错了。  问题是没有导入struts支持Spring的库,Struts 2 Spring Libraries

 

 

4

Messages:

·  antlr.collections.AST.getLine()I

File:

org/hibernate/hql/ast/HqlSqlWalker.java

Line number:

876

 

Stacktraces

java.lang.reflect.InvocationTargetException

    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:597)

   

 

问题出在struts包里面有也有个antlr_XXX.jar,与hibernate包里面的冲突了,我是用myclipse自带的类库,要把struts中低版本的antlr删掉

选择windows---preferences---在文本框中搜索struts 2(中间有空格)---选择struts 2---选择antlr-2.7.2.jar---Remove---OK

 

 

5、No result defined for action org.action.LoginAction and result success

 

<action name="login.action" class="loginAction">  和jsp里面的action

name都改为login就好了, 真是坑爹。

Exception starting filter Struts2 
Caught exception while loading file struts-default.xml - [unknown location] 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131) 
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100) 
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:130) 
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52) 
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395) 

严重: Exception starting filter struts2 

Caught exception while loading file struts-default.xml - [unknown location] 

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:839) 

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:131) 

at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:100) 

 

那基本可断定是其他jar包有冲突, 应该是XML解析包有冲突. 
检查发布后的WEB-INF/lib有两个XML解析包: xml-apis.jar和xerces-2.6.2.jar 
这种错误真正原因不是JDK 6和Struts 2冲突, 而是 MyEclipse Hibernate 类库中多了两个包: xml-apis.jar和xerces-2.6.2.jar, 这两个包的功能和JDK的冲突了. 

 

解决:删除  hibernate3.2 中的xerces-2.6.2.jar包,

选择windows---preferences---在文本框中搜索struts 2(中间有空格)---选择struts 2---hibernate---选择hibernate3.2---------删除xerces-2.3.2.jar------移除tomcat中的部署------重新部署——ok

 

7

 hibernate反向工程生成的实体类就不能正确放在指定的包路径下

  描述:

  使用hibernate反向工程生成实体类时,类文件可以正确生成在src的一级目录下但在二级或多级目录时就会生成在src的默认包下.例如:表 User,它有俩个字段username和password.在src下的一级目录为hibernate,存放User由反向工程生成的实体类User和 UserDao,这时是正确的.但是当存放位置为二级或多级目录时,反向工程生成的实体类就不能正确放在指定的包路径下:例如,在src下存在包 cn.com.test.hibernate 如果我想把生成的实体类放在此包下,当导入时已经指定了该包,可单击确定按钮后,生成的实体类却在src的default包下.

  源文档 <;

  解决:

  在反向生成的最后一步,让你填写类名的时候,你需要把你的包名也包含进去。这样就可以在两层或者以上层存放了。

  或者最后一步时,类名使用默认值,不做任何更改。

 

如果手动移动的话,会报Association references unmapped class

 

8type Exception report

message Could not execute JDBC batch update; SQL [insert into SCOTT.TEST (Value, Id) values (?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.dao.InvalidDataAccessResourceUsageException: Could not execute JDBC batch update; SQL [insert into SCOTT.TEST (Value, Id) values (?, ?)]; nested exception is org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update

org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:635)

org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)

org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)

org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)

org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)

 

java.sql.BatchUpdateException: ORA-00904: "ID": 标识符无效

 

 

百度半天无解,google一分钟搞定。

http://aizhimin.iteye.com/blog/890622

http://www.bkjia.com/oracle/978429.html

百度上各种说列名不对的,我也是醉了。

转载自:http://blog.csdn.net/zhuyongzhen1219/article/details/50527267

-----------------------------------我是分割线---------------------------------------------------

相关文章: