2017-11-01 4 views
0

Ich habe eine Aufgabe, eine Datenbank zu erstellen, wo ich Informationen über Geldgebot und fragen Werte von bestimmten Tagen speichern könnte. Meine Entität hat wenige Felder, zwei davon sind currencyType (enum USD, EUR usw.) und currencyDate (LocalDate). Beide sollten nicht eindeutig sein, aber ihre Zusammenführung sollte (ich möchte query.uniqueResult() verwenden, um die Währung aus der Datenbank zu erhalten). Das ist, warum ich verwendet:Wie kann ich uniqueConstraints für mehrere Spalten im Ruhezustand verwenden?

uniqueConstraints = @UniqueConstraint(columnNames = {"currencyType", "currencyDate"})) 

ich aber, dass jedes Mal wenn ich versuche, Datenbank bereits bestehende Kombination von currencyType und currencyDate hinzuzufügen, wird die Datenbank nur die Abfrage ignorieren, aber es gibt mir einen Fehler, zB:

ERROR: Duplicate entry '0-2017-10-27' for key 'UK56cur2s470vruol04nntdbl49' 

wo erste 0 steht für currencyType (in int) und anderen Teil ist Datum. Wie kann ich den Winterschlaf so gestalten, wie ich es möchte? Ich meine, die Abfrage zu übergeben, wenn es den Datensatz duplizieren würde?

+0

Ihre Frage ist verwirrend. Sie haben eine eindeutige Einschränkung erstellt. der Währungstyp und das Datum. Daher wird erwartet, dass der Ruhezustand eine Ausnahme auslöst, wenn Sie versuchen, einen Eintrag mit einer Kombination aus Währungstyp und Datum hinzuzufügen, die bereits in der Datenbank vorhanden ist. Was genau funktioniert nicht wie erwartet? Was meinst du mit "Winterschlaf so machen, wie ich will"? – Turing85

Antwort

0

Das einzige, was ich weiß, Verhalten zu bekommen, wie Sie wollen, ist Ihre Kombination dieser beiden Felder als Id zu machen und merge oder saveOrUpdate Methoden zu verwenden, zum Speichern, aber ich glaube nicht, dass es ein gutes Design ist. Für mich ist der beste Weg, dies zu lösen, den Datensatz von db durch diese zwei Werte zu holen und zu aktualisieren, wenn vorhanden, oder neu zu erstellen, wenn nicht.

Verwandte Themen