AFAIK non c'è un'annotazione per fare questo. Avete due opzioni
Uno, creare un'annotazione del validatore personalizzato. Here è un ottimo esempio. Effettuare una chiamata alla classe DAO e controlla la disponibilità nella realizzazione validatore
public boolean isValid(String object, ConstraintValidatorContext constraintContext) {
return userDAO.userNameAvailable(object); //some method to check username availability
}
O
set unico = true sulla vostra proprietà nella classe entità.
@Column(unique = true)
private String userName;
Ma questo non funziona con @valid, invece genera un'eccezione sulla persistenza. Devi usare una logica appropriata per gestirlo.
La prima soluzione non è infallibile. Controlla risposta this su SO.
Il secondo non fallirà mai.
UPDATE
Come Nim Chimpsky commentato, utilizzando sia insieme sarà una soluzione concreta.
Mi consiglia di utilizzare entrambi i metodi – NimChimpsky
Ebbene, dopo aver scavato un po 'sento che la seconda è meglio :) Sarà non fallire mai a differenza del primo. – shazinltc
um, beh, che si affida alla gestione delle eccezioni per quando un utente immette un nome utente preesistente, prima di provare a persistere, devo confermare l'input dell'utente – NimChimpsky