2016-12-03 84 views
0

在我的Web應用程序中,我試圖刪除數據庫中的一行,但它似乎不起作用,我試圖找出原因,但我不能。這裏是我的DAO類:使用Java,Hibernate和servlet從數據庫中刪除行

public class userDao { 

private SessionFactory factory, session; 

public userDao(SessionFactory factory) { 
    this.factory = factory; 
} 

public void delete(long id){ 
    Session session1 = factory.openSession(); 
    Transaction tx = null; 
    List<User> u = null; 
    try { 
     tx = session1.beginTransaction(); 
     Query query = session1.createQuery("SELECT * FROM user_table WHERE id = :id"); 
     query.setParameter("id", id); 
     System.out.println("aaaaa" + id); 
     u = query.list(); 
     session1.delete(u.get(0)); 
     tx.commit(); 
    } catch (HibernateException e) { 
     if (tx != null) { 
      tx.rollback(); 
     } 

    } finally { 
     session1.close(); 
    } 

} 
} 

而且在我的servlet我有:

public class DeleteServlet extends HttpServlet{ 
userDao u = new userDao(new Configuration().configure().buildSessionFactory()); 
User a = new User(); 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException{ 
    System.out.println("asa"); 
    response.sendRedirect("/A1.2/home.jsp"); 
} 


@Override 
public void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException{ 
    String s = request.getParameter("id"); 
    long id = Long.parseLong(s); 
    u.delete(id); 

    response.sendRedirect("/A1.2/home.jsp"); 
} 
} 

我認爲這個問題是在DAO,因爲我試圖從數據庫中獲取一個用戶,我得到了空指針異常。

警告我得到: 的log4j:警告沒有附加目的地可以爲記錄器(org.hibernate.type.BasicTypeRegistry)中找到。 log4j:WARN請正確初始化log4j系統。 log4j:WARN有關更多信息,請參閱http://logging.apache.org/log4j/1.2/faq.html#noconfig

+0

是否有錯誤消息或完整的堆棧跟蹤?如果有,請將其包含在問題中。 – msagala25

+0

沒有錯誤信息,但有一些警告。 – user3848412

回答

0

如果您使用的是HQL,則應該使用類名而不是表名,類屬性而不是表列。你的班級的名字是user_table?是id類屬性還是列名?

+0

user_tabl是表和id是列,我有User.java作爲類,但proprety id具有與列相同的名稱。 – user3848412

+0

所以你應該'選擇*從用戶WHERE ID =:ID'。在此之前,您應該使用User類和user_table進行映射。另一件事,爲什麼你得到的用戶,而不是刪除它?爲什麼不直接使用刪除查詢'從用戶刪除其中id =:id'? – Alee

+0

我試過了,但它不起作用,我不明白爲什麼 – user3848412