2017-10-27 1 views
0

In einer der Dienste führen wir einige Operationen sparen:ein Objekt abrufen und als neue mit Hibernate/Spring Data JPA

  1. aktualisieren Tabelle A - Call-Methode mit kommentierten Abfrage, Verfahren aus dem Repository, das sich JpaRepository .
  2. Auswählen aus Tabelle B (repository.findOne (B_PK))
  3. Modify abgerufene Objekt von Punkt 2
  4. Speicher geändertes Objekt als neue Entität (repository.save (B_Object))

Leider Wir bekommen einen Fehler: "Bezeichner einer Instanz von B_Object geändert von X nach Z". Wie sollen wir das richtig machen ??

+1

Der einfachste Ansatz besteht darin, einen Kopierkonstruktor hinzuzufügen. – chrylis

+0

Aber unsere Objekte sind riesig, also sieht es nicht gut aus ... – Lui

+0

Also refaktorieren Sie zuerst Ihre Datenbank, was wird wahrscheinlich die Performance verbessern? Ich vermute, dass Sie viele Spalten duplizieren, die normalisiert werden könnten. – chrylis

Antwort

1

Sie sollten loslösen, Objekt, das Sie in Punkt 2 abrufen, bevor Sie ändern und speichern wie neue Entität.

-1

Löschen Sie die eindeutige Kennung von dem Objekt (wenn es automatisch generiert ist)

Wenn doesnt einen Autogen Schlüssel, den Sie für die Composite-Taste, um die Einschränkungen zu entfernen, müssen haben.

+0

Die Spalte hat eine Spalte als Primärschlüssel und die ID wird von der Sequenz und den Triggern generiert. Unglücklicherweise funktioniert es immer noch nicht, wenn ich die korrekte Generierung für das Entitätsobjekt hinzugefügt habe. Ich musste auch den Kopierkonstruktor anwenden, den chrylis vorgeschlagen hatte, aber es ist hässlich, weil unsere Objekte dafür zu groß sind ... – Lui