0

私は Hibernate の初心者であり、URL からパラメーターを取得し、Hibernate オブジェクトを作成し、それを MySQL データベースに格納するサーブレットを開発しています。

同時に 1000 個の URL を送信しています。MySQL テーブルを見ると、最後のオブジェクトだけがデータベースに追加されています。

doGet メソッド:

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

    // TODO Auto-generated method stub

    //HttpSession session = request.getSession(true);
    //session.putValue("uid", count);

    String id = request.getParameter("id");
    String url = request.getParameter("url");
    String lastVisitTime = request.getParameter("lastVisitTime");
    String visitCount = request.getParameter("visitCount");
    String title = request.getParameter("title");
    String typedCount = request.getParameter("typedCount");

    HistoryItem hi = new HistoryItem(id, url, lastVisitTime, visitCount, title, typedCount);

    File f = new File("C:\\Users\\atılay\\Desktop\\apache-tomcat-7.0.30-windows-x64\\jspservlets\\UserModeling\\src\\hibernate.cfg.xml");

    SessionFactory sessionFactory = new Configuration().configure(f).buildSessionFactory();
    Session session = sessionFactory.openSession();
    session.beginTransaction();
    session.save(hi);
    session.getTransaction().commit();
    session.flush();
    session.close();

}

履歴項目:

public class HistoryItem {

@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
@Basic(optional = false)
private int i;
private String id  = "";
private String url = "";
private String lastVisitTime = "";
private String visitCount = "";
private String title = "";
private String typedCount = "";
}

何が問題ですか?解決策が見つかりませんでした。

4

1 に答える 1

0

データベースに保存するオブジェクト/エンティティを作成している場合は、その ID を設定しないでください。

ID の割り当ては、オブジェクトの保存時に行われます。これは Hibernate の責任です。ID が既に設定されているということは、HB がオブジェクトが既に保存されていると見なすことを意味します。

実際、これはあまり良い質問、コーディング スタイル、または例ではありません。

「1000個のURLを同時に送信」. どういう意味ですか?一度に 1000 のブラウザーを開き、それらすべてから同時に要求を送信しますか? トークセンス。

SessionFactory は、webapp またはサーブレットに保持する必要があります。このコードは、すべてのページ要求に対して、Hibernate の起動と初期化全体を実行しています。

File f = new File("C:\\Users\\atılay\\Desktop\\apache-tomcat-7.0.30-windows-x64\\jspservlets\\UserModeling\\src\\hibernate.cfg.xml");

SessionFactory sessionFactory = new Configuration().configure(f).buildSessionFactory();

パラメータとして「ID」を削除するか、オプションで使用してレコードをロードおよび編集し、Hibernate セットアップを適切に行います。

その後、プロジェクトが機能する可能性があります。

于 2012-10-02T02:52:05.440 に答える