session的传值问题
public Users hasUser(String username, String password) {
Session session = hsf.getSession();
try {
String sql = "from Users as u where u.username=? and u.password=?";
// String sql = "from Users";
Query query = session.createQuery(sql);
query.setString(0, username);
query.setString(1, password);
List list = query.list();
if (list != null && list.size() != 0) {
Iterator itor = list.iterator();
Users user = (Users) itor.next();
return user;
} else {
return null;
}
} catch (Exception e) {
System.out.println("UserDaoImpl.hasUser() 方法发生异常:");
e.printStackTrace();
return null;
} finally {
hsf.closeSession();
}
}
public class HibernateSessionFactory{
private static SessionFactory sessionFactory;
public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
static{
try{
sessionFactory = new Configuration().configure().buildSessionFactory();
}catch(Exception ex){
ex.printStackTrace();
}
}
public HibernateSessionFactory() {
}
/*
* 获得当前session
*/
public static Session getSession() throws HibernateException{
Session s = (Session)session.get();
if(s == null || !s.isOpen()){
s = sessionFactory.openSession();
session.set(s);
}
return s;
}
/*
* 回滚
*/
public static void rollback(Transaction tx){
try{
if(tx != null){
tx.rollback();
}
}catch(HibernateException e){
System.out.println("rollback faild." + e);
}
}
/*
* 关闭session
*/
public static void closeSession() throws HibernateException{
Session s = session.get();
session.set(null);
if(s != null){
s.close();
}
}
}
在Session session = hsf.getSession();中获得的session为空值,导致执行Query query = session.createQuery(sql);这句话报出异常。
请问这是为什么?我应该如何修改?