2017-03-19 3 views
0

Session.delete()によってSQL DB内のROWを削除しようとしていますが、RemoveProjectサーブレットを呼び出すときに、データベースからオブジェクトを削除するパラメータを取得しています。Session.delete()が動作しません

SessionFactory sf=DataConnect.getConnect(); 
    Session sess=sf.openSession(); 
    Transaction tr=sess.beginTransaction(); 
    try{ 
    Query qur=sess.createQuery("from Project"); 
    org.hibernate.Criteria cr=sess.createCriteria(Project.class); 
    //cr.add(Restrictions.eq("name",request.getParameter("name"))); 
    cr.add(Restrictions.idEq(Integer.parseInt(request.getParameter("id")))); 
         List obj=cr.list(); 

    for (Iterator iterator = obj.iterator(); iterator.hasNext();) 
    { 
     osl.pojo.Project devobj = (osl.pojo.Project) iterator.next(); 
     System.out.print("DELETING"+devobj.getName()+"from Project"); 
     sess.delete(devobj); 



     tr.commit();System.out.println("ROW DELETED"); 
    } 

    }catch(HibernateException he){ he.printStackTrace(); ;tr.rollback(); response.sendRedirect(request.getRequestURI());} 

しかし、私はまたフラッシュセッションを試みました。

Glassfish Consoleでこのメッセージが表示されています。あなたはforループ内でコミットするため、ループの外にそれを変更しようとしているため

***Info: DELETING DATA_To_BE_DELETED from Project 

WARN: SQL Error: 1064, SQLState: 42000 

ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index=1' at line 1 

Info: HHH000010: On release of batch it still contained JDBC statements 
Severe: org.hibernate.exception.SQLGrammarException: could not execute statement*** 

答えて

0

言っ発行のためのデータベースの列名は、データベースのプロパティ「インデックスと競合ました"ので、オブジェクトデータをSqlに更新する際にエラーが発生し、SQL構文でエラーが発生しました。

0

問題がある:

for (Iterator iterator = obj.iterator(); iterator.hasNext();) { 
    osl.pojo.Project devobj = (osl.pojo.Project) iterator.next(); 
    System.out.print("DELETING"+devobj.getName()+"from Project"); 
    sess.delete(devobj); 
} 
tr.commit(); 
+0

これは動作しません、同じ警告とエラー –

+0

これは解決されました、私のSQLテーブルのプロパティ名は 'インデックス'でした。そのため、SQL構文は機能しませんでした。 –

関連する問題