Sto cercando di avere un db coerente in cui il nome utente e l'email sono unici.MongoDB Morphia - Unique
http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue
http://code.google.com/p/morphia/wiki/EntityAnnotation
mia classe utente si presenta così:
public class User {
@Indexed(unique = true)
@Required
@MinLength(4)
public String username;
@Indexed(unique = true)
@Required
@Email
public String email;
@Required
@MinLength(6)
public String password;
@Valid
public Profile profile;
public User() {
...
ho usato il @Indexed (unica = true) di annotazione, ma non funziona. Ci sono ancora duplicati nel mio db.
Qualche idea su come posso risolvere questo problema?
Edit:
ho letto di ensureIndexes ma questo mi sembra un approccio sbagliato, io non voglio caricare i dati duplicati, solo per vedere che la sua davvero un duplicato.
Voglio bloccarlo subito.
somthing come
try{
ds.save(user);
}
catch(UniqueException e){
...
}
hm, non capisco. Certo, posso verificarlo, ma cosa succederebbe se due utenti si registrassero con lo stesso nome utente nello stesso tempo? Avrei bisogno di qualcosa che sia atomico. –
I database hanno una propria build nei sistemi di blocco (leggere, scrivere blocchi ecc.), Quindi credo che se ci sono vincoli unici a livello di database, non sarebbe possibile salvare contemporaneamente i dati duplicati? –
Forse mi sbaglio, ma pensavo che intendessi qualcosa del genere. 'if (user.not_in_db) ds.save (utente);' E se non ho alcun vincolo a livello di db, ci saranno dati duplicati. –