【发布时间】:2014-07-24 15:24:42
【问题描述】:
这是我的测试类:
public class test {
public static void main(String args[])
{
database_connection db=new database_connection();
java.util.List li=db.select("select name from sign_up where u_id='ABCD79'");
java.util.Iterator it=li.iterator();
while(it.hasNext())
{
Object oo=it.next();
System.out.println("The result is "+oo.toString());
}
}
}
这是我的数据库连接文件:
public class database_connection
{
public static SessionFactory sessionfactory;
public Session Listsession ;
public Query query;
public List list;
public static void open_connection()
{
try
{
database_connection db=new database_connection();
sessionfactory=new Configuration().configure().buildSessionFactory();
db.Listsession = sessionfactory.openSession();
}
catch(Exception e)
{
System.out.print("problem to open connection with database"+e);
}
}
public List select(String qry)
{
try
{
open_connection();
Listsession.beginTransaction();
query =Listsession.createQuery(qry);
list=query.list();
Listsession.getTransaction().commit();
Listsession.close();
}
catch(Exception e)
{
Listsession.getTransaction().rollback();
System.out.print("problem to select"+e);
}
return list;
}
}
在这种情况下,测试返回空指针异常,但是当我将这一行 public Session Listsession ; 替换为 public static Session Listsession ; 时,我从数据库中得到 name。我不知道为什么会这样,因为我希望每个用户都有一个不同的会话对象,我不能使会话对象静态。
【问题讨论】: