我有具有使用defineing在遊戲框架唯一約束2
@Email
@Required
@Column(unique=true)
public String email;
由框架也是一種電子郵件管理屬性 我想要的電子郵件是唯一的,在目前即時通訊做它的ID的用戶模型
這工作正常,但它拋出了一個PersistenceException。 玩法框架是否具有驗證功能,以便在表單級別處理此操作。 我想避免嘗試catch塊我的user.save()
我有具有使用defineing在遊戲框架唯一約束2
@Email
@Required
@Column(unique=true)
public String email;
由框架也是一種電子郵件管理屬性 我想要的電子郵件是唯一的,在目前即時通訊做它的ID的用戶模型
這工作正常,但它拋出了一個PersistenceException。 玩法框架是否具有驗證功能,以便在表單級別處理此操作。 我想避免嘗試catch塊我的user.save()
我有同樣的IDENTICAL問題。我最終通過使用一種方法來檢查該電子郵件是否已經存在,然後,如果是,則向表單添加錯誤。 事情是這樣的:
Form<EntityClass> yourForm = Form.form(EntityClass.class).bindFromRequest();
if (EntityClass.mailAlreadylExist(yourForm.data.get("email"))){
List<ValidationError> validationErrorList = new ArrayList<>();
validationErrorList.add(new ValidationError("" , "email already used" ,new ArrayList<>()));
yourForm.errors().put("", validationErrorList);
}
if (yourForm.hasErrors(){
return badRequest(yourView.render(yourForm));
} else {
//Do your stuff here, no PersistenceException will be thrown due to duplicate email
}
爲我工作,希望它有助於
唯一約束只涉及數據庫:如果他們在表單級定義,表單驗證(「表面檢查」)將需要查詢數據庫來驗證您的目的。
我相信這個例外是你能找到的最好的(或者更壞的)解決方案。
爲了避免很多try/catch塊,您可能只有一個入口點來執行這項工作。
是什麼'mailAlreadylExist()'函數是什麼樣子? – KJ50 2015-03-06 18:39:47
從郵件= mail_i_want_to_check返回次數> 0的usertable中選擇次數(*)?真假; – user2858970 2015-03-07 19:44:21