1

現在の日付のデータをmysqlテーブルから削除したい。

これは私が書いたコードであり、「ERROR」行に例外が表示されています。

where条件が適用されたテーブルからデータを削除する手順は何ですか?

                    Date date=new Date();

                     SimpleDateFormat myFormat=new SimpleDateFormat("dd-MM-yyyy");

                     String todayDate=myFormat.format(date);

                    String query="delete * from today_list where today_date="+"'"+todayDate+"'";    
        Transaction t1=session.beginTransaction();  
        session.createQuery(query).executeUpate();//ERROR
                    t1.commit();
4

4 に答える 4

4

実際のパラメータ値をクエリ文字列に連結しないでください。setParameter代わりに使用してください。

Query query = session.createQuery("delete from todayList where todayDate = :date ");
query.setParameter("date", date);
query.executeUpate();

これは簡単に理解できましたが、次回もエラーメッセージを投稿してください。

EDITクエリ文字列のテーブル名にも注意してください。これはデータベース内の実際のテーブル名ではなく、Hibernateエンティティ名です。

于 2012-09-19T09:51:45.133 に答える
3

SQL構文によると、*deleteに書くべきではありません。つまり、ステートメントを次のように変更します。

delete from ...

Hibernateを含むORMを処理する場合、これは正しい方法ではありませんが。この方法では、キャッシュをバイパスします(キャッシュがある場合)。より良い方法は、セッションAPIメソッドを使用してエンティティを削除することです。

于 2012-09-19T09:50:36.973 に答える
0

それらは例外をスローできる2つのものです:

1-「*」なしで「削除元」と書く必要があります

2-必要なデータ形式を把握してみてください。間違った形式を入力すると、問題が発生する可能性があります。

于 2012-09-19T09:57:00.013 に答える
0

まず、コードにスペルミスがあります。の代わりになる必要がsession.createQuery(query).executeUpdate(); あります;

session.createQuery(query)..executeUpate();

このセッショントランザクションを使用して、DB内のデータを削除できます。

Configuration cfg = new Configuration();
                cfg.configure("Hibernate.cfg.xml");
                SessionFactory ss = cfg.buildSessionFactory();
                Session s = ss.openSession();
                Transaction tx = s.beginTransaction();
                Query query = s.createQuery("delete from Employee where Id:Id");
                query.setParameter("Id", valueToDelete);
                query.executeUpdate();
                tx.commit();
                s.close();

これは私にとって完璧に機能します!! :)

于 2018-04-01T07:07:19.107 に答える