2016-04-13 6 views
0

Ich habe Probleme, meine Unit-Test mit der Methode CrudRepository.save arbeiten zu lassen. Wenn ich meinen Komponententest ausführe, läuft es für immer und nicht über die save() Methode hinaus.Spring Data JPA bleibt beim Speichern der Methode im Test stecken

Die letzte DEBUG-Nachricht, die in meiner Konsole erscheint, ist:

16:20:35.293 [main] DEBUG org.hibernate.loader.Loader - Done entity load 

Nun ist der seltsame Teil ist, dass es funktioniert, wenn ich eine Insert-Anweisung ausführen, die alte JdbcTemplate verwendet, nur, wenn der Primärschlüssel 1 ist.
Also zum Beispiel;
INSERT INTO my_table (id, value) VALUES (1, 'Hello World')
funktionieren wird, und der Test erfolgreich
aber das wird nicht:
INSERT INTO my_table (id, value) VALUES (2, 'Hello World')
und der Test läuft weiter für immer

bereits für so etwas wie auto_increment nicht Setup richtig suchen, aber Ich konnte nichts finden.

+0

Konnten Sie den genauen Code zur Verfügung stellen, den Sie für die JdbcTemplate Einsätze verwenden, die das Laufen für immer verursacht? –

+0

Es ist anders herum; Standardmäßig laufen meine Tests für immer und mit der Insert-Anweisung in meiner Frage wird der Test beendet. – Jelle

+0

Okay, ich habe herausgefunden, dass save() nur funktioniert, wenn es aktualisiert wird. Wenn also ID x in der Datenbank vorhanden ist, funktioniert es, sonst nicht. – Jelle

Antwort

0

Okay, ich fand heraus, dass ich einen anderen Wert für die Annotation @GeneratedValue für meine automatisch inkrementierte Variable verwenden musste.

Ich habe den ersten Wert von dieser Antwort verwendet: https://stackoverflow.com/a/4103347/5976604 und es hat danach funktioniert.

Ich denke, dass es ärgerlich ist, dass Hibernate keine Ausnahme oder etwas wirft, wenn dies auftritt, aber stattdessen bleibt es stecken.