我想要一個一致的數據庫,用戶名和電子郵件是唯一的。MongoDB Morphia - 唯一
http://www.mongodb.org/display/DOCS/Indexes#Indexes-unique%3Atrue
http://code.google.com/p/morphia/wiki/EntityAnnotation
我的用戶類看起來是這樣的:
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() {
...
我用@Indexed(唯一=真)註解,但是它不工作。在我的數據庫中仍然有重複。
任何想法我怎麼能解決這個問題?
編輯:
我讀到ensureIndexes但是這似乎是一個錯誤的做法,我不想上傳重複的數據,只看到其真正的副本。
我想立即封鎖它。
財產以後像
try{
ds.save(user);
}
catch(UniqueException e){
...
}
嗯,我不明白。當然,我可以檢查它,但如果兩個用戶在同一時間使用相同的用戶名註冊,該怎麼辦?我需要一些原子。 – 2012-08-04 22:24:22
數據庫在鎖定系統(讀取,寫入鎖定等)中有其自己的構建,所以我相信如果在數據庫級別有獨特的約束 - 同時保存重複數據是不可能的? – 2012-08-04 22:26:14
也許我錯了,但我認爲你的意思是這樣的。 'if(user.not_in_db)ds.save(user);'如果我在db級別沒有約束,將會有重複的數據。 – 2012-08-04 22:35:09