2012-05-03 62 views
0

Iam新增了hibernate.Now嘗試使用hibernate將用戶詳細信息保存到我的數據庫。爲此,我創建了3個.java文件。代碼如下 hiberpack包;嘗試使用休眠保存數據時出現NullPointerException

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.AnnotationConfiguration; 

public class HiberUtil { 
    private static final SessionFactory sessionFactory; 

    static { 
     try { 
      sessionFactory = new AnnotationConfiguration().configure() 
        .buildSessionFactory(); 
     } catch (Throwable ex) { 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 
}  

2.next是DbMap.java

package hiberpack; 

    import javax.persistence.Column; 
    import javax.persistence.Entity; 
    //import javax.persistence.GeneratedValue; 
    import javax.persistence.Id; 
    import javax.persistence.Table; 

    @Entity 
    @Table(name = "user_details") 
    public class DbMap { 


     @Id 
     //@GeneratedValue 
     @Column(name = "id") 
     private long id_auto; 

     @Column(name = "name", nullable = false) 
     private String username; 

     @Column(name = "Smobile", nullable=false) 
     private String mobnum; 

     public long getId_auto() { 
      return id_auto; 
     } 

     public void setId_auto(long id_auto) { 
      this.id_auto = id_auto; 
     } 

     public String getUsername() { 
      return username; 
     } 

     public void setUsername(String username) { 
      this.username = username; 
     } 

     public String getMobnum() { 
      return mobnum; 
     } 

     public void setMobnum(String mobnum) { 
      this.mobnum = mobnum; 
     } 


    } 

3.Below在UserSave的servlet

package servlets; 
    import hiberpack.DbMap; 
    import hiberrepo.Repository; 

    import java.io.IOException; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    public class UserSave extends HttpServlet { 

     private static final long serialVersionUID = 1L; 

     protected void doPost(HttpServletRequest request, 
       HttpServletResponse response) throws ServletException, IOException { 

      Repository rep = new Repository(); 
      String name = request.getParameter("uname"); 
      String mp = request.getParameter("mob"); 
      DbMap st = new hiberpack.DbMap(); 
      st.setUsername(name); 
      st.setMobnum(mp); 
      rep.insertStock(st); 


     } 

     @Override 
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
       throws ServletException, IOException { 
      doPost(req, resp); 
     } 
    } 

4.Below是Repository.java

package hiberrepo; 

import hiberpack.HiberUtil; 
import hiberpack.DbMap; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 

public class Repository { 
     SessionFactory sf = HiberUtil.getSessionFactory(); 
     Session sfSession = null; 

     public void insertStock(DbMap storeObj) 
     { 
      sfSession.save(storeObj); 
     } 
} 

它顯示空指針異常我試圖進入d ATA到使用hibernate.The錯誤消息db是如下

java.lang.NullPointerException 
     hiberrepo.Repository.insertStock(Repository.java:15) 
     servlets.UserSave.doPost(UserSave.java:25) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:641) 
     javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
+2

讀取異常堆棧跟蹤:錯誤發生在Repository.java的第15行。然而,這是你在問題中沒有向我們展示的唯一一類。 –

+0

@JBNizet這是存儲庫文件.Thanx提前... :) –

回答

0

這是你的代碼:

Session sfSession = null; 
... 
sfSession.save(...) 

你不能調用一個空引用的方法。初始化你的sfSession變量。 PS:Hibernate是一個非常複雜的野獸,可以理解和使用。如果你不知道你不能調用一個空引用的方法,並且不能診斷出這樣一個基本的錯誤,那麼我會建議你學習用Java編程,而不是使用Hibernate的Web應用程序。

+0

可以詳細說明嗎?如何初始化它和al? –

+0

這取決於你的架構,你的設計選擇,你運行的環境(JTA?非JTA?Spring?),事務邊界。閱讀http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#architecture-current-session和http://docs.jboss.org/hibernate/core/3.6/reference/ EN-US/html_single /#交易。但正如我所說,這不應該由Java新手處理,因爲它太複雜了。 –

+0

搞定了。這是我的第一個hibernate項目。謝謝你的幫助 –

1

sfSession在您撥打Repository.insertStock()時爲空。你明確忘記設置會話。 (空指針異常與DbMap storeObj沒有任何關係,在輸入保存方法之前拋出異常。)

+0

@Johaanna謝謝你...... :) –

相關問題