SSH整合遇到的问题

no hibernate session bound to thread

这个问题出现的原因是你没添加事务

因为没有添加事务支持,就不能从线程资源中获取Session 即不能通过
sessionFactory.getCurrentSession() 来获取session

解决办法:在你的service层添加@Transactional注解

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

这个问题出现的原因是懒加载异常,报没有可用的session

19:40:40,294 ERROR LazyInitializationException:42 - could not initialize proxy - no Session
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:167)
    at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:215)
    at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
    at com.dust.entity.Department_$$_javassist_2.getName(Department_$$_javassist_2.java)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

因为事务的开启是在service层,当action调用service层执行一系列操作时,在service层事务由开启到关闭过程中打开了session,
执行完操作后又关闭了,而当你显示在JSP页面的时候,可能用到懒加载来加载一些集合的关联,
此时就会报no Session,很明显,这时的session已经关闭了,怎么给你再去懒加载呢。

解决办法有两种:

1.在关联的映射文件中设置 lazy=false

<set name="users" lazy="false">

关闭懒加载,提前准备好数据,缺点:性能低

2.延长session关闭时间

在web.xml文件中配置,使用OpenSessionInViewFilter过滤器,注意hibernateFilter过滤器和struts2过滤器在映射时的先后顺序。

<!-- 配置Spring的OpenSessionInViewFilter以解决懒加载异常的问题 -->
    <filter>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>OpenSessionInViewFilter</filter-name>
        <!-- 拦截*.do的请求 -->
        <url-pattern>*.do</url-pattern>
    </filter-mapping>

Unable to get the default Bean Validation factory

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.HibernateException: Unable to get the default Bean Validation factory
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)

出现这个问题的原因:其实这个问题是我们自己造成的!

为什么这么说?因为我们在配置Spring和Hibernate进行结合的时候版本出现了问题。

解决办法:
在hibernate.cfg.xml配置文件中添加:

<property name="javax.persistence.validation.mode">none</property>

这里写图片描述

Could not create the view: An unexpected exception was thrown.

这里写图片描述

出现问题的原因:myeclipse非正常关闭或其他原因,导致service不能使用,以下是报错信息

java.lang.NullPointerException
    at com.genuitec.eclipse.ast.deploy.core.Deployment.<init>(Unknown Source)
    at com.genuitec.eclipse.ast.deploy.core.ModuleDeployment.<init>(Unknown Source)
    at com.genuitec.eclipse.ast.deploy.core.WebDeployment.<init>(Unknown Source)
    at com.genuitec.eclipse.ast.deploy.core.Deployment.create(Unknown Source)
    at com.genuitec.eclipse.ast.deploy.core.DeploymentManager.loadFromPreferences(Unknown Source)
    at com.genuitec.eclipse.ast.deploy.core.DeploymentManager.init(Unknown Source)
    at com.genuitec.eclipse.ast.deploy.core.DeploymentManager.<init>(Unknown Source)
    at com.genuitec.eclipse.ast.deploy.core.DeploymentManager.getDefault(Unknown Source)

解决办法:
关闭myeclipse,打开myeclipse工作区间,
找到.metadata–>.plugins–>org.eclipse.core.runtime–>.settings目录

F:\workspace\02_MyEclipse\MyEclipse_07\.metadata\.plugins\org.eclipse.core.runtime\.settings

这是我的工作区间

找到.settings目录下的:com.genuitec.eclipse.ast.deploy.core.prefs文件,打开看一下,都是项目信息,然后果断删除就ok了。
重启myeclipse,完美解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值