2017-05-11 8 views
2

私はそのエラーを受けており、私はそれを修正しようとしましたが、何もしませんでした。スレッド "main"の例外を修正する方法org.hibernate.exception.SQLGrammarException:ネイティブの一括操作クエリを実行できませんでしたか?

int nr = nrfromPar; //13 
int nrdays = nrfromPar;//1 
Date data = datafromPar; //Thu May 11 23:11:09 EEST 2017 

String statusRequest = "UPDATE home " 
     + "SET date_ma = :data, nr_days_ma = :nrdays " 
     + "WHERE nr_req = :nr"; 

SQLQuery simpleSQL = session.createSQLQuery(statusRequest); 
    simpleSQL.setParameter("data", data); 
    simpleSQL.setParameter("nrdays", nrdays); 
    simpleSQL.setParameter("nr", nr); 
int a =simpleSQL.executeUpdate(); 
System.out.println(a); 

結果は次のとおりです。このエラーは意味しない

Hibernate: 
    UPDATE 
     home 
    SET 
     date_ma = ?, 
     nr_days_ma = ? 
    WHERE 
     nr_req= ? 
1 

何:"によって引き起こさなかっ:ます。java.sql.SQLException:パラメータ1に指定した値なし" をを?

私はhibernateアノテーションを使用していますが、nativ SQLクエリを使用します。あなたはこのエラーを取得する

+0

あなたは持っている値でパラメータを設定する必要があります。 – Compass

+1

そして、あなたのテーブル名は 'home ac'ですか? – Sami

+0

テーブル名はhomeですが、別名を使用しました。エイリアスを使用しない場合でも、それはまだ挿入されません。 – Alexa

答えて

1

パラメータ1

に指定した値がありません、あなたは:data, :nrdays, :nrに値を指定していないので、それはこのようなものでなければなりません。あなたのような

SQLQuery simpleSQL = session.createSQLQuery(statusRequest); 
simpleSQL.setParameter("data", some_value); 
simpleSQL.setParameter("nrdays", some_value); 
simpleSQL.setParameter("nr", some_value); 

このよう?を使用することができます。

String statusRequest = "UPDATE home " 
     + "SET date_ma = ?, nr_days_ma = ? " 
     + "WHERE nr_req = ?"; 
SQLQuery simpleSQL = session.createSQLQuery(statusRequest); 
simpleSQL.setParameter(1, some_value); 
simpleSQL.setParameter(2, some_value); 
simpleSQL.setParameter(3, some_value); 
+0

おそらくこれは別のエラーをもたらすでしょう – Sami

+0

テーブルの名前は、これはエラー@サミですか? –

+0

はい、間違っていると思います、mybe 'home_ac'または' [home ac] ' – Sami

関連する問題