私は春のプロジェクトで働いています。ここで私は休止3.5.5-Finalを使用し、データベースはMySQLです。私のコードは、これは私にcreateSQLQuery(sql).executeUpdate()を使用してsql form spring hibernateでデータを挿入できません。
更新最近販売された製品のような出力が得られ怒鳴る
String sql = "INSERT INTO recently_sold_products (product_id, sell_time) VALUES ('9749', '2016-06-01 00:00:00')";
Query query = getCurrentSession().createSQLQuery(sql);
System.out.println("Updating recently sold products. Row = " + query.executeUpdate());
です。行= 1
しかし、私はデータベーステーブルをチェックすると、私は行が見つかりませんでした。
この表では、product_idは主キーです。重複したproduct_idを挿入しようとすると、エラーメッセージが表示されます。重複するエントリ '9749'がキー 'PRIMARY'になります。これにより、クエリがデータベースに到達することが確認されます。しかし、通常の行を挿入しようとすると、executeUpdate()メソッドの出力は1ですが、テーブルに行が挿入されません。
私は何が起こるか理解できません。
あなたのコードが 'commit'をしないように見えます – Jens
単純なクエリではなく、セッション、トランザクション、オブジェクトを使用するようにクエリを変更することをお勧めします。さもなければ、session.getTransaction()。commit()のような何かをしようとしているはずです。ここで、sessionは現在のセッションです。 getCurrentSession()はここで動作します。 –
最後に問題は解決しました。メソッドの前に@Transactionalを使うだけです。 –