ssh整合时怎么能拿到session来执行HQL语句?
spring+struts2+hbeinate时我写了:basedao代码如下publicclassBaseDaoextendsHibernateDaoSupport{p...
spring+struts2+hbeinate时 我写了:
basedao代码如下
public class BaseDao extends HibernateDaoSupport{
public Session getSess(){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
return session;
}
不管点出来的是什么getCurrentSession() 都返回了session。
hibernate.cfg.xml配置
<property name="current_session_context_class">thread</property>
applicationContext.xml配置
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="baseDao" class="com.qygl.dao.BaseDao">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
请问高手到底怎么能获取到session 。帮我写全些!环境里无异常,提交了有异常,一看12行就是获取session为空,这行Session session=this.getHibernateTemplate().getSessionFactory().openSession();
异常如下:500
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
com.qygl.dao.BaseDao.getSess(BaseDao.java:11)
com.qygl.dao.BaseDao.findAAA(BaseDao.java:30)
com.qygl.dao.impl.UsersDAO.findName(UsersDAO.java:39)
com.qygl.biz.impl.UsersBiz.login(UsersBiz.java:23)
action.LoginAction.execute(LoginAction.java:27)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source) 展开
basedao代码如下
public class BaseDao extends HibernateDaoSupport{
public Session getSess(){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
return session;
}
不管点出来的是什么getCurrentSession() 都返回了session。
hibernate.cfg.xml配置
<property name="current_session_context_class">thread</property>
applicationContext.xml配置
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<bean id="baseDao" class="com.qygl.dao.BaseDao">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
请问高手到底怎么能获取到session 。帮我写全些!环境里无异常,提交了有异常,一看12行就是获取session为空,这行Session session=this.getHibernateTemplate().getSessionFactory().openSession();
异常如下:500
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
com.qygl.dao.BaseDao.getSess(BaseDao.java:11)
com.qygl.dao.BaseDao.findAAA(BaseDao.java:30)
com.qygl.dao.impl.UsersDAO.findName(UsersDAO.java:39)
com.qygl.biz.impl.UsersBiz.login(UsersBiz.java:23)
action.LoginAction.execute(LoginAction.java:27)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source) 展开
2个回答
展开全部
this.getHibernateTemplate().getSessionFactory().openSession();
这样得到session肯定没错,如果得不到那就是你的配置有问题。
但是不建议你用opensession这个方法,这是打开一个新session,需要你自己关闭 维护。
你可以直接用getHibernateTemplate()里面的方法操作数据库,不应定非要使用session,如果要session建议你用getHibernateTemplate().getSessionFactory().getCurrentSession();这样的出来的session不需要你手动关闭
这样得到session肯定没错,如果得不到那就是你的配置有问题。
但是不建议你用opensession这个方法,这是打开一个新session,需要你自己关闭 维护。
你可以直接用getHibernateTemplate()里面的方法操作数据库,不应定非要使用session,如果要session建议你用getHibernateTemplate().getSessionFactory().getCurrentSession();这样的出来的session不需要你手动关闭
更多追问追答
追问
opensession也报这个异常。我配置如果不对,希望高人指点。他们的区别我是知道哦的百度我都查了N次了,但是就没查到解决方法……
不是说 用某个方法,opensession getCurrentSession() 都好 主要帮我配个不空的session出来
谢谢谢!
追答
hibernate和spring整合,就不再需要hibernate.cfg.xml这个配置文件了,只要applicationContext.xml就可以了。
连接数据库主要是dateSource和sessionFatory的配置,我发个样例给你,你自己去改。
dao的配置你那写的就行了,配置好了就可以得到session
tp/pojo/TpUser.hbm.xml
org.hibernate.dialect.Oracle9Dialect
展开全部
bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:orcl">
</property>
<property name="username" value="bbs"></property>
<property name="password" value="bbs"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@127.0.0.1:1521:orcl">
</property>
<property name="username" value="bbs"></property>
<property name="password" value="bbs"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
追问
复制的 看不懂
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询