Spring Boot : Update H2 Repository

bueseb84

Mitglied
Guten Morgen in die Runde :

Ich baue gerade eine kleine Spring Boot Anwendung und will meine Datenobjekte in einer Datenbank speichern, Dazu benutze ich H2 als Datenbank und es klappt auch ziemlich gut.

Nun meine Frage : Wenn sich ein Objekt ändert und ich es erneut in die Datenbank speichere existiert es 2x. Wie schaffe ich es, dass das Objekte geupdatet wird ?

Zu meiner Struktur :
Meine Repositories existieren als Interface :
Java:
public interface ImportedLocationRepository extends JpaRepository<ImportedLocation, Long> {
}

Das Speichern der Objekte erfolgt in einem speraten Repository Serive :
Java:
        if (modelObject instanceof ImportedLocation) {
            log.info("save location object '{}' to location respository", modelObject);
            locationRepository.save((ImportedLocation) modelObject);
        }

Kann mir jemand einen Tipp geben ?
Vielen Dank für eure Unterstützung
Euer Tummi
 

lam_tr

Top Contributor
Ich vermute mal dein modelObject ist ein neues Object ohne Key, beim Speichern werden zwar die Daten in DB geinsertet und nicht geupdatet.

Wo holst du modelObject her?
 

bueseb84

Mitglied
Hallo und vielen Dank für deine sehr schnelle Antwort.

Also das ganze ist etwas umfangreicher :
Im ersten Schritt werden die Daten aus einer CSV Datei importiert. Dabei werden alle ModelObjekte (es gibt noch mehr als die ImportedLocation) angelegt und auch in der Datenbankgespeichert.

Bei einem erneuten Start der App werden die Daten wieder aus der Datenbank gelesen, nun haben alle vorhandenen Objekte auch eine ID(bzw Key). Aber wenn sich nun ein existierendes Objekt ändert so wird es in der Datenbank neu angelegt.
 

lam_tr

Top Contributor
Also wenn du ein bestimmtes Objekt über
locationRepository.findById(1).setName("HelloWorld") machst, logt er dir ein Insert anstatt ein Update? Unwahrscheinlich.

Zeig doch mal was du gemacht hast.
 

bueseb84

Mitglied
Okay
ICh verwende nur save ohne zu Prüfen ob das Objekt bereits vorhanden ist. Wird das nicht "automatisch" gemacht.
Also wenn ich in mein locationRepository ein Objekt mit einer id speichern möchte meine ich ?
 

lam_tr

Top Contributor
Nee es geht mir mehr oder weniger darum, ob du das Objekt schon davor in irgendeinerweise schon geholt hast.

Wenn du das Objekt einfach neu instanziiert hast und die Werte eines bereits existierenden übernimmt, speichert der als eine neue Row in der DB.

Daher die Frage, wo holst du modelObject her und hat das Objekt eine Id?
 

bueseb84

Mitglied
Wenn die App zum allersten mal gestartet wird existieren natürlich noch keine Objekte. DIeser werden durch einen Import angelegt und dann auch in der Datenbank gespeichert !
Bei jedem weiteren start werden zuerst die Objkete aus der Datenbank geholt und haben dann auch eine ID
 

bueseb84

Mitglied
Die Daten werden danach in einer Liste zwischengespeichert. MIt diesen Daten wrid dann gearbeitet (also änderungen gemacht)

Aber wenn ich das richtige verstehe, ist es sinnvoller bei einem save Aufruf zu prüfen ob das Objekt bereits in der DB vorhanden ist
 

bueseb84

Mitglied
Java:
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@RequiredArgsConstructor
@Entity
@EqualsAndHashCode
@ToString
@Slf4j
public class ImportedLocation implements ILocation {

    @Id
    @Getter
    @GeneratedValue(strategy = GenerationType.AUTO)
    @EqualsAndHashCode.Exclude
    private Long id;

    @Getter
    @NonNull
    private String postalCode;

    @Getter
    @NonNull
    private String city;

    @Getter
    @NonNull
    private String street;

    @Getter
    @NonNull
    private String houseNumber;
}

So sieht meine Klasse aus.
Trotzdem verstehe ich nicht, wie ein update ausführen soll. ALso wenn ich
 

lam_tr

Top Contributor
Das passt soweit auch. Und an welcher stelle zwischenspeicherst du die Locations und dann wieder die Frage wie holst du das modelObject, kannst du mir da mehr Code zeigen?
 

bueseb84

Mitglied
Danke für den Einwand :

Vielleicht noch eine wichtige Information : meine app soll spieldaten verwalten.
Dazu ist es mir wichtig, dass die importierten Spiel und auch weitere Objekte (Wettbewerb) nur einmal vorkommen, daher muss ich beim Import bereits vergleichen ob das Objekt schon importiert worden ist und somit vorhanden ist. Daher vergleiche ich alle bzw fast alle properties
Gibt es evtl. einen besseren weg?
 

mrBrown

Super-Moderator
Mitarbeiter
Das führt dazu, das zwei Entitäten auf Datenbankseite identisch sind, auf Applikationsseite aber nicht, und andersrum. Bringt erfahrungsgemäß nur Probleme mit sich.
Führt auch das Konzept von Änderungen ad absurdum: X ist vor einer Änderung ein anderes Objekt als nach einer Änderungen, aber genau das sollte ja nicht gelten. (Wenn sich dein Alter ändert, bist du ja auch nicht plötzlich eine andere Person, sondern hast nur ein anderes Alter)


Doppelte Einträge kannst du entweder auf Datenbankseite verhindern (unique-Constraints), oder vorm einfügen einfach abfragen, ob ein Eintrag mit diesen Werten vorliegt.


Für dein Problem solltest du aber wie gesagt mal den Code zeigen, wo Objekte erstellt, verändert und gespeichert werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Spring Boot Test Assertions mit Objekten Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Pfad zu Test Datei in application.yml in Spring Boot Test Frameworks - Spring, Play, Blade, Vaadin & Co 7
R Spring Boot sql Beziehungen Frameworks - Spring, Play, Blade, Vaadin & Co 12
M Spring Boot 3 Datenbanken zur Laufzeit Verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 5
ExceptionOfExpectation In Meiner Spring-Boot Applikation verlangt die Datenbank Wert für eine ID Frameworks - Spring, Play, Blade, Vaadin & Co 5
H Spring Boot Applikation und JHM Benchmark sowie ContextConfiguration in H2 Tests ich bekomme es nicht hin Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Tests in Spring-Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
thor_norsk Konfigurationsprobleme mit Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 9
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 1
R Spring Boot Integration-testing mit Keycloak Frameworks - Spring, Play, Blade, Vaadin & Co 13
thor_norsk Spring Boot Fehler Frameworks - Spring, Play, Blade, Vaadin & Co 1
thor_norsk Spring Boot und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 5
D Spring Boot Test ob Validation geprüft wurde Frameworks - Spring, Play, Blade, Vaadin & Co 8
K Spring Boot OneToMany Frameworks - Spring, Play, Blade, Vaadin & Co 6
8u3631984 Spring Boot Docker Image erstellen und mit docker-compose konfigurieren Frameworks - Spring, Play, Blade, Vaadin & Co 1
gradlew.bat spring-boot:run funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 4
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
B Spring Boot und JPA Error creating bean Frameworks - Spring, Play, Blade, Vaadin & Co 24
R Spring Boot: Warum soll PasswordEncoder in einer neuen Methode definiert sein? Frameworks - Spring, Play, Blade, Vaadin & Co 1
D Spring Boot und Microservices Frameworks - Spring, Play, Blade, Vaadin & Co 1
M Spring Boot additional Datasource for a single entity Frameworks - Spring, Play, Blade, Vaadin & Co 0
Avalon Wie sieht bei Euch das Deployment einer Spring Boot Anwendung aus? Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Threads in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 7
W DI-Problem in Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
T Spring Boot: Was bewirkt parent in maven genau? Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Vaadin+Spring Boot erster Seitenload nach Neustart endlos Frameworks - Spring, Play, Blade, Vaadin & Co 0
doncarlito87 Wie erhalte ich ein JSON aus eine NativeQuery (Spring Boot)? Frameworks - Spring, Play, Blade, Vaadin & Co 8
Avalon @Query Select Abfrage liefert falsche Werte (Spring Boot, JPA, Hibernate) Frameworks - Spring, Play, Blade, Vaadin & Co 3
Avalon Erstellung Dockerimage mit spring-boot:build-image in Spring Boot mit Umgebungsvariablen Frameworks - Spring, Play, Blade, Vaadin & Co 0
D Spring Boot Field Injection in MapStruct Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot seltsame Logeinträge: Manipulationsversuche? Frameworks - Spring, Play, Blade, Vaadin & Co 2
D Spring Boot Mile Stone und Snapshot Versionen Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Exception Body Frameworks - Spring, Play, Blade, Vaadin & Co 2
N Spring Boot - Overkill für private Projekte? Frameworks - Spring, Play, Blade, Vaadin & Co 3
K Migration eines internen Frameworks zu Spring:Boot Frameworks - Spring, Play, Blade, Vaadin & Co 0
Z Hibernate & Postgres in Spring Boot (Syntaxprobleme) Frameworks - Spring, Play, Blade, Vaadin & Co 2
Z Spring Boot mit JPA;, Hibernate, Rest & Lombok Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Security/Boot/Vaadin Cookie Problem bei iFrame Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot: Feld ignorieren Frameworks - Spring, Play, Blade, Vaadin & Co 3
N Buch zum Spring Framework bzw. Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Jasypt Spring Boot HIbernate wie komme ich an den Key? Frameworks - Spring, Play, Blade, Vaadin & Co 4
8u3631984 Spring Boot im Docker Container - Logback wird nicht verwendet Frameworks - Spring, Play, Blade, Vaadin & Co 13
sascha-sphw Spring Boot Resource Server (OAuth2) @MockMvc Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot CDN Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Deserialiserung mit JSON Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot POST zu PHP API Frameworks - Spring, Play, Blade, Vaadin & Co 12
OnDemand Spring Boot WebClient ErrorHandling Frameworks - Spring, Play, Blade, Vaadin & Co 5
8u3631984 Spring boot : Unique Constraint mit Many to Many Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Repository null Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Limits API calls Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring boot mit Keyclaok rollen basiert Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Spring Boot Scheduler flexibel machen Frameworks - Spring, Play, Blade, Vaadin & Co 4
OnDemand Spring Boot + Vaadin API Security Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring Boot und seine Module verstehen Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Architektur für Spring Boot Projekt Frameworks - Spring, Play, Blade, Vaadin & Co 5
M Spring Boot, Versionskontrolle und Entwicklungsumgebung und Deployment Frameworks - Spring, Play, Blade, Vaadin & Co 2
Avalon Image aus JSON Objekt im Browser anzeigen (BLOB, extrahieren, konvertieren) Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
Avalon CSS Datei wird in Spring Boot mit Thymeleaf im Standardordner nicht gefunden Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Mapping null bei GET Aufruf Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Boot Test mit Junit Frameworks - Spring, Play, Blade, Vaadin & Co 8
J Spring Boot - Reactor Frameworks - Spring, Play, Blade, Vaadin & Co 1
L Spring Boot, H2 und Restschnittstelle synchonisation mit Client Frameworks - Spring, Play, Blade, Vaadin & Co 10
TonioTec Spring Boot Datenbankabfrage Frameworks - Spring, Play, Blade, Vaadin & Co 7
OnDemand Spring Boot encoding Slash in URL Parameter Frameworks - Spring, Play, Blade, Vaadin & Co 7
S Spring Boot startet nicht Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot -> War File | 404 in Tomcat Frameworks - Spring, Play, Blade, Vaadin & Co 20
LimDul Spring Boot Anwendung "automatisch" neustarten Frameworks - Spring, Play, Blade, Vaadin & Co 3
A Spring boot Frameworks - Spring, Play, Blade, Vaadin & Co 18
bueseb84 Unit Test mit Spring Boot - Service Autowired Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand DTO <> Entity Hibernate Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 28
OnDemand Verständnisfrage DTO Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 19
OnDemand Spring Boot Load Balancing Frameworks - Spring, Play, Blade, Vaadin & Co 5
S Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Threads Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Spring Boot: Wert aus Config Datei ermitteln Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot: Ein geschütztes Verzeichnis Frameworks - Spring, Play, Blade, Vaadin & Co 1
bueseb84 Probleme mit Spring Boot Docker und Bootstrap Frameworks - Spring, Play, Blade, Vaadin & Co 9
OnDemand Spring Boot Eureka/Zuul Frameworks - Spring, Play, Blade, Vaadin & Co 0
F Redirect in einer Spring Boot WebApplication Frameworks - Spring, Play, Blade, Vaadin & Co 7
B Erstes Spring Boot Projekt: Gameserver-Manager Frameworks - Spring, Play, Blade, Vaadin & Co 5
V Spring Boot, thymeleaf, Eingaben cashen oder per session speichern? Frameworks - Spring, Play, Blade, Vaadin & Co 2
S Spring Boot Security Frameworks - Spring, Play, Blade, Vaadin & Co 3
S Spring Boot i18n Frameworks - Spring, Play, Blade, Vaadin & Co 28
A Spring Boot/ OneToMany Relation Frameworks - Spring, Play, Blade, Vaadin & Co 29
S Spring Boot testen mit Service Klassen Frameworks - Spring, Play, Blade, Vaadin & Co 4
L Controller Spring Boot mit Java Frameworks - Spring, Play, Blade, Vaadin & Co 20
J Spring Boot H2 Datbase Frameworks - Spring, Play, Blade, Vaadin & Co 2
J Spring Boot Thymleaf mit Java.Optional Frameworks - Spring, Play, Blade, Vaadin & Co 0
L JavaFX Anwendung mit Spring Boot und mehrere FXML Forms Frameworks - Spring, Play, Blade, Vaadin & Co 5
P Mit Maven (und Spring-boot) ein FatJAR und ein EAR bauen Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Basic Authentication langsam Frameworks - Spring, Play, Blade, Vaadin & Co 2
OnDemand Start Stop Spring Boot Frameworks - Spring, Play, Blade, Vaadin & Co 4
H Spring Boot - Dependency Injection Frameworks - Spring, Play, Blade, Vaadin & Co 26
B Java Spring Boot - POM-Problem Frameworks - Spring, Play, Blade, Vaadin & Co 8
OnDemand Spring Boot parallele Requests Frameworks - Spring, Play, Blade, Vaadin & Co 1
OnDemand Spring Boot Resttemplate exchange XML Frameworks - Spring, Play, Blade, Vaadin & Co 6
S Root-Pfad zu meiner Spring Boot Application Frameworks - Spring, Play, Blade, Vaadin & Co 3
OnDemand Spring Boot Error Logging Frameworks - Spring, Play, Blade, Vaadin & Co 5
OnDemand Spring Boot Transactions Frameworks - Spring, Play, Blade, Vaadin & Co 10

Ähnliche Java Themen

Neue Themen


Oben