Ich habe eine Java-Bohne. Jetzt möchte ich sicher sein, dass das Feld eindeutig sein sollte.
Ich verwende den folgenden Code:
@UniqueConstraint(columnNames={"username"})
public String username;
Aber ich bekomme einen Fehler:
@UniqueConstraint is dissallowed for this location
Was ist der richtige Weg, um eindeutige Einschränkungen zu verwenden?
Hinweis: Ich verwende das Play Framework.
Antworten:
Um sicherzustellen, dass ein Feldwert eindeutig ist, können Sie schreiben
Die Annotation @UniqueConstraint dient zum Annotieren mehrerer eindeutiger Schlüssel auf Tabellenebene. Aus diesem Grund wird beim Anwenden auf ein Feld eine Fehlermeldung angezeigt.
Referenzen (JPA TopLink):
quelle
Sie können auf Klassenebene mit der folgenden Syntax verwenden
quelle
Ich verwende derzeit auch das Play Framework mit Hibernate- und JPA 2.0-Annotation und dieses Modell funktioniert ohne Probleme
Hoffe es hat geholfen.
quelle
Hinweis: In Kotlin wird
arrayOf(...)
anstelle von die Syntax zum Deklarieren der Arrays in Annotationen verwendet{...}
Hinweis: Ab Kotlin 1.2 ist es möglich, die
[...]
Syntax zu verwenden, damit der Code viel einfacher wirdquelle
Weg1:
- Hier fungieren sowohl Spalte1 als auch Spalte2 separat als eindeutige Einschränkungen. Beispiel: Wenn der Wert von Spalte1 oder Spalte2 zu irgendeinem Zeitpunkt übereinstimmt, wird der Fehler UNIQUE_CONSTRAINT angezeigt.
Weg2:
- Hier wirken die kombinierten Werte von Spalte1 und Spalte2 als eindeutige Einschränkungen
quelle
Eindeutige Einschränkungen, die nur zum Erstellen eines zusammengesetzten Schlüssels verwendet werden, der eindeutig ist. Die Tabelle wird als Primärschlüssel dargestellt und als eindeutig kombiniert.
quelle
Sie können @UniqueConstraint auf Klassenebene für den kombinierten Primärschlüssel in einer Tabelle verwenden. beispielsweise:
öffentliche Klasse ProductAttribute {}
quelle
Eine eindeutige Anmerkung sollte direkt über der Attributdeklaration platziert werden. UniqueContlements gehen in die Annotation @Table über der Datenklassendeklaration. Siehe unten:
quelle