2016-07-20 10 views
0

Wenn im Frühjahr von CrudRepository Daten gespeichert werden, aktualisiert es entweder den vorhandenen Datensatz in der Datenbank oder erstellt einen neuen Datensatz, wenn die ID für diesen Datensatz null/leer ist.Einfügen nur eines Datensatzes mit CrudRepository

Ich habe eine App, die Datensätze in einer Tabelle einfügt und aktualisiert, wo Primärschlüssel ist String, also nicht inkrementieren, aber der Wert in dieser Spalte gespeichert ist Integer. Also bekommt die App die max(last_insert_id(string)) und erhöht sie für den neuen Datensatz und speichert sie in der Datenbank. Es gibt eine andere App, die denselben Prozess ausführt und in einigen Fällen werden die Daten überschrieben.

Also, wenn ich CrudRepository, wenn ich nur den Datensatz einfügen kann, anstatt es zu aktualisieren, sollte dies bei der Lösung des Problems helfen. Wie kann ich nur einen neuen Datensatz mit CrudRepository erstellen, gibt es dafür eingebaute Unterstützung?

+0

Sie sind sich bewusst, dass, wenn mehrere Anwendungen für die gleiche Datenbank, die Strategie der Primärschlüssel für die Bestimmung einer ziemlich schlecht ist? –

+0

@M.Deinum Ich weiß, dass es eine schlechte Strategie ist, aber es ist etwas, das ich geerbt habe und keine Änderung vornehmen kann, weil es viele andere Apps gibt, die damit arbeiten, also muss ich jetzt damit leben. – kiran

+0

Anstatt mit JPA (nicht unbedingt mit Spring Data JPA) zu arbeiten, arbeiten Sie damit. Erstellen Sie einen benutzerdefinierten Generator für die IDs, der die Logik enthält, die Sie gerade ausführen. Anstatt es selbst in der Anwendung zu tun, wird die Erkennungslogik in der App (mehr) zuverlässig funktionieren. –

Antwort

Verwandte Themen