Frage

Ich versuche, ein SQL-Skript in meinem Junit-Test mit dem Feder auszuführen. Das Skript wird verwendet, um Daten für die Tests einzurichten. Wenn jedoch das Skript ausgeführt wird, werden die Einsätze in das Skript nach jedem Test begangen. Die Frühlingsdokumentation sagt, dass das Rollback nicht mit DDL erwartet, aber alles in meinem Skript ist DML. Alles, was es enthält, werden Anweisungen einfügen und die letzte Einfügungs-ID erhalten (Set @Blah= Last_Insert_ID ()).

Ich konfiguriere etwas falsch? Ich benutze dies gegen eine MySQL-Datenbank. Unsere Konfiguration lautet wie folgt:

generasacodicetagpre.

Hier ist, was ich denke, dass er auf einiger Forschung basiert. Der erste Anruf zum EXEXUTESQLScript läuft in einer separaten Transaktion. Die SimplejdbcTemplate.Update-Methode von Feder wird von EXEXUTESQLScript aufgerufen. Da dies ein von einem JDBC-Anschluss abgesondertem, der aus einem Anschlussbecken erhalten wird, ist dies nicht garantiert, dass ich dieselbe Verbindung auf nachfolgende Zugriffe auf den DB erhält und daher nicht garantiert in derselben Transaktion ausgeführt werden kann. .

Wenn ich alle meine DB-Operationen über den Transaktionsmanager- oder (Hibernate-Sitzungsfabrik) durchführen würde, funktioniert es, worbung, wie die Einbauten die Transaktionen scope. Meine Optionen sind hier zu:

    .
  1. herausfinden, wie Sie einfachjdbcTemplate.update und dem nachfolgenden Ist-Code ausführen, den ich in derselben Transaktion teste. Ich glaube, ich kann dies möglicherweise tun, aber meine Bemühungen waren bisher fruchtlos.

  2. Machen Sie alle meine Testdaten, die durch das Sessionfactory eingerichtet sind. Anstatt gerade SQL-Skripts durch JDBC auszuführen, würde ich Modellobjekte auftauchen und durch einen Ruhezustand-Dao bestehen bleiben.

  3. bin ich hier auf dem richtigen Weg? Kann jemand weitere Anleitung geben?

War es hilfreich?

Lösung 2

Ich konnte dies lösen, indem ich die Erklärung meines EntityManagerFactory das folgende "Jpavendoradapter" hinzufügen kann.

generasacodicetagpre.

Andere Tipps

Sie haben wahrscheinlich Auto-Commit auf der DB-Verbindung aktiviert.

generasacodicetagpre.

Beachten Sie, dass Sie dieses Argument auch in der JDBC-URL übergeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top