2012-08-14 23 views
23

Używam SEAM 2/Hibernate wraz z bazą danych PostgreSQL 9. Mam poniższej tabeliUnikalne ograniczenie dla wielu kolumn

Active Band 
=========== 
active_band_id serial 
active_band_user text 
active_band_date timestamp 
active_band_process integer 

Chciałbym dodać ograniczenie, które zapewnia każdy nowy wpis ma unikalną kombinację active_band_user i active_band_date.

Może być potencjalnie wiele prób wstawiania na sekundę, więc potrzebuję tego, aby było tak wydajne, jak to możliwe, czy istnieje adnotacja SEAM/hibernate, której mogę użyć w odwzorowaniu encji?

góry dzięki

+0

To wydaje się powielać http://stackoverflow.com/questions/3211972/specifying-restrictions-unique-together-in -hibernate –

Odpowiedz

52

Nie ma adnotacji Hibernacja, który sprawdza unikalność przed Insert/Update. Ale jest adnotacja, która będzie generować takie ograniczenie do bazy danych, jeśli jest używane automatyczne tworzenie bazy danych:

@Table(
    name="ACTIVE_BAND", 
    uniqueConstraints= 
     @UniqueConstraint(columnNames={"active_band_user", "active_band_date"}) 
) 
+0

Nie sądzę, że obsługuje to, ponieważ otrzymuję "Wartość atrybutu adnotacji Table.uniqueConstraints musi być pewną adnotacją @ javax.persistence.UniqueConstraint" w Eclipse. Czy ta metoda generuje ograniczenie w schemacie SQL? – DaveB

+0

Tak, obsługuje. Jest to udokumentowane tutaj: http://docs.oracle.com/javaee/6/api/javax/persistence/Table.html#uniqueConstraints%28%29 Coś jeszcze musi być nie tak. Czy importowany jest plik javax.persistence.UniqueConstraint? –

+12

Wiem, że to było lata temu, ale upewnij się, że używasz 'javax.persistence.Table' not' org.hibernate.annotations.Table'. Hibernate "@ Table" nie ma pola 'uniqueConstraints'. – Patrick

Powiązane problemy