我用hibernate做了一个登陆验证,第一次登陆后不管成功或者失败,再次打开登陆页面,提交数据后就会返回:session is closed,代码如下:
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get(); if (session == null) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
} return session;
上面是生成session的函数,
public boolean loginConfirm(String username,String password )
{
String name ,pass;
Session session = HibernateSessionFactory.currentSession();
Transaction tx = null;
boolean flag = false;
try{
tx = session.beginTransaction();
Test test = new Test(username,password);
Query user=session.createQuery("from Test as c where c.username=:name and c.password=:pass");
user.setString( "name",username);
user.setString( "pass",password);
java.util.List result = user.list();
tx.commit();
if(result.isEmpty())
flag = false;
else
flag = true;
}catch(HibernateException e)
{
if(tx!= null){
tx.rollback();
}
throw e;
}finally{
session.close();
}
return flag; }
我用过一次session后,我关闭它,我再次登陆的时候,应该再调用currentSession() 生成session,但是在我单步执行的时候,到了 tx = session.beginTransaction();就会跳到异常处理那,
public static Session currentSession() throws HibernateException {
Session session = (Session) threadLocal.get(); if (session == null) {
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
sessionFactory = cfg.buildSessionFactory();
}
catch (Exception e) {
System.err.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
session = sessionFactory.openSession();
threadLocal.set(session);
} return session;
上面是生成session的函数,
public boolean loginConfirm(String username,String password )
{
String name ,pass;
Session session = HibernateSessionFactory.currentSession();
Transaction tx = null;
boolean flag = false;
try{
tx = session.beginTransaction();
Test test = new Test(username,password);
Query user=session.createQuery("from Test as c where c.username=:name and c.password=:pass");
user.setString( "name",username);
user.setString( "pass",password);
java.util.List result = user.list();
tx.commit();
if(result.isEmpty())
flag = false;
else
flag = true;
}catch(HibernateException e)
{
if(tx!= null){
tx.rollback();
}
throw e;
}finally{
session.close();
}
return flag; }
我用过一次session后,我关闭它,我再次登陆的时候,应该再调用currentSession() 生成session,但是在我单步执行的时候,到了 tx = session.beginTransaction();就会跳到异常处理那,
------------------------------------------------------------------------------------
是MyEclipse自动生成的配置文件,我找了,里面没有你说的内容