0

Iam は休止状態が初めてです。現在、休止状態を使用してユーザーの詳細をデータベースに保存しようとしています。そのために、3 つの .java ファイルを作成しました。

1.最初は HiberUtil.java です。コードは次のとおりです パッケージ hiberpack;

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.次は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.以下はUserSaveサーブレットです

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.以下は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);
        }
}

休止状態を使用してデータベースにデータを入力しようとすると、Null ポインター例外が表示されます。エラー メッセージは次のとおりです。

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)
4

2 に答える 2

1

sfSessionを呼び出すと null になりますRepository.insertStock()。セッションを設定するのを完全に忘れていました。(ヌルポインタ例外は とは関係ありませんDbMap storeObj。save メソッドに入る前に例外がスローされます。)

于 2012-05-03T11:14:16.033 に答える
0

Here's your code:

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

You can't call a method on a null reference. Initialize your sfSession variable.

PS: Hibernate is a very complex beast to understand and use. If you don't know that you can't call a method on a null reference, and fail to diagnose such a basic bug, I would advise you to learn programming in Java with more simple problems than a web app using Hibernate.

于 2012-05-03T11:11:28.790 に答える