2010-08-17 6 views
12

Je veux m'assurer que toutes les lignes de ma table ont une combinaison unique de deux champs, et je veux spécifier cela en utilisant des annotations dans ma classe d'entité. J'ai essayé d'utiliser une combinaison de @Table et @UniqueConstraint mais apparemment je le fais mal, en ce sens que je peux seulement sembler spécifier que les colonnes séparées doivent être uniques (je peux déjà spécifier cela en utilisant la propriété unique de @ Column) plutôt qu'une combinaison de colonnes. Par exemple je veux une table qui a les champs A et B pour ne contenir que des lignes qui ont une combinaison unique de A et B. Ni champ/colonne doit être unique, c'est la combinaison des deux qui devrait être unique.Comment spécifier qu'une combinaison de colonnes doit être une contrainte unique utilisant des annotations?

Voici ce que j'ai essayé jusqu'à présent sans joie:

@Table(name = "MY_TABLE", 
     uniqueConstraints = @UniqueConstraint(columnNames = 
              { "FIELD_A", "FIELD_B" })) 

et

@Table(name = "MY_TABLE", 
     uniqueConstraints = { @UniqueConstraint(columnNames = 
               { "FIELD_A", "FIELD_B" }) }) 

Quelqu'un peut-il s'il vous plaît suggérer la bonne façon de le faire? Aussi, s'il est possible d'utiliser des annotations JPA à la place des annotations spécifiques à Hibernate qui seraient préférables.

Merci d'avance pour votre aide.

--James

+2

duplication possible de [vérification de contrainte unique dans JPA] (http://stackoverflow.com/questions/1839186/unique-constraint-check-in-jpa) –

Répondre

14

votre deuxième essai

@Table(name = "MY_TABLE", 
    uniqueConstraints = { @UniqueConstraint(columnNames = 
              { "FIELD_A", "FIELD_B" }) }) 

devrait fonctionner comme prévu.

+0

Merci beaucoup pour l'aide. Il s'est avéré que j'avais une autre erreur dans mon programme d'insertion de données qui m'a amené à croire que c'était le problème. Maintenant, j'ai trouvé l'autre erreur et cette contrainte unique fonctionne comme annoncé. J'apprécie vraiment votre aide! –

+0

Même le premier formulaire devrait fonctionner. –

Questions connexes