Existe-t-il un moyen de spécifier à l'aide de JPA qu'il doit y avoir plusieurs contraintes uniques sur différents ensembles de colonnes?
@Entity
@Table(name="person",
uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
// Unique on code and uid
public String code;
public String uid;
// Unique on username
public String username;
public String name;
public String email;
}
J'ai vu une annotation spécifique à l'hibernation, mais j'essaie d'éviter les solutions spécifiques aux fournisseurs, car nous décidons toujours entre l'hibernation et le datanucleus.
L'attribut de @Table
uniqueConstraints
accepte en fait un tableau de ceux-ci. Votre exemple n'est qu'un raccourci pour un tableau avec un seul élément. Sinon, cela ressemblerait à:
@Table(name="person", uniqueConstraints={
@UniqueConstraint(columnNames={"code", "uid"}),
@UniqueConstraint(columnNames={"anotherField", "uid"})
})
Chaque fois que la contrainte unique est basée sur un seul champ, vous pouvez utiliser @Column(unique=true)
sur cette colonne.