Mam fasolę Java. Teraz chcę mieć pewność, że pole powinno być niepowtarzalne.
Używam następującego kodu:
@UniqueConstraint(columnNames={"username"})
public String username;
Ale pojawia się błąd:
@UniqueConstraint is dissallowed for this location
Jaki jest właściwy sposób używania unikalnych ograniczeń?
Uwaga: używam platformy do zabawy.
Odpowiedzi:
Aby upewnić się, że wartość pola jest niepowtarzalna, możesz pisać
Adnotacja @UniqueConstraint służy do opisywania wielu unikalnych kluczy na poziomie tabeli, dlatego podczas stosowania jej do pola pojawia się błąd.
Referencje (JPA TopLink):
źródło
Możesz używać na poziomie klasy z następującą składnią
źródło
Obecnie używam również frameworka odtwarzania z hibernacją i adnotacjami JPA 2.0, a ten model działa bez problemów
Mam nadzieję, że to pomogło.
źródło
Uwaga: w Kotlinie składnia deklarowania tablic w adnotacjach używa
arrayOf(...)
zamiast{...}
Uwaga: od wersji Kotlin 1.2 możliwe jest użycie
[...]
składni, dzięki czemu kod stał się znacznie prostszyźródło
Way1:
- Tutaj zarówno Kolumna1, jak i Kolumna2 działają oddzielnie jako unikalne ograniczenia. Np .: jeśli kiedykolwiek dopasuje się wartość kolumny1 lub kolumny2, pojawi się błąd UNIQUE_CONSTRAINT.
Way2:
- W tym przypadku połączone wartości kolumna1 i kolumna2 działają jak unikalne ograniczenia
źródło
Unikalne ograniczenia używane tylko do tworzenia klucza złożonego, który będzie unikalny i będzie reprezentował tabelę jako klucz podstawowy połączony jako unikalny.
źródło
możesz użyć @UniqueConstraint na poziomie klasy, dla połączonego klucza podstawowego w tabeli. na przykład:
publiczna klasa ProductAttribute {}
źródło
Unikalną adnotację należy umieścić tuż nad deklaracją atrybutu. UniqueContraints trafiają do adnotacji @Table powyżej deklaracji klasy danych. Zobacz poniżej:
źródło