Ich arbeite in einem Frühjahr Projekt, wo ich Hibernate 3.5.5-Final und meine Datenbank ist MySQL. Mein Code ist untenKann nicht Daten mit Sql-Formular Frühling Hibernate mit createSQLQuery (sql). ExecuteUpdate()
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());
Dies gibt mir eine Ausgabe wie
Aktualisierung kürzlich verkauften Produkte. Zeile = 1
Aber wenn ich die Datenbanktabelle überprüfe, fand ich keine Zeile.
In dieser Tabelle ist product_id der Primärschlüssel. Wenn ich versuche, eine doppelte product_id einzufügen, dann habe ich die Fehlermeldung gefunden, Duplicate-Eintrag '9749' für Schlüssel 'PRIMARY', die bestätigen, dass die Abfrage in der Datenbank erreichen. Wenn ich jedoch versuche, eine normale Zeile einzufügen, ist die Ausgabe der executeUpdate() -Methode 1, aber keine Zeileneinfügung in der Tabelle.
Ich kann nicht verstehen, was passiert.
Sieht so aus, als würde Ihr Code kein commit machen. – Jens
Ich würde empfehlen, die Art der Abfrage zu ändern, so dass Sie Sitzungen, Transaktionen und Objekte statt nur einer einfachen Abfrage verwenden. Andernfalls sollten Sie etwas wie session.getTransaction() machen. Commit() Dabei ist Sitzung Ihre aktuelle Sitzung. getCurrentSession() kann hier funktionieren. –
Endlich ist das Problem gelöst. Ich benutze @Transactional vor der Methode. –