我目前正在開發一個社交網站,我目前正在實施用戶可以更改密碼的部分。我正在使用實體管理器用新密碼刷新數據庫的內容。以下是實施的代碼。爲什麼刷新實體管理器時不更新數據庫?
final Implementation user = em.find(Implementation.class, username);
if((user!=null) && user.getPassword().equals(hash(username,oldPassword))){
user.setPassword(hash(username,newPassword));
em.refresh(user);
}else{
throw new ChangePasswordException();
}
但是當我嘗試重新登錄時,必須使用舊的密碼,否則,如果新密碼提供它會告訴你:密碼不匹配。有誰知道也許爲什麼會發生這種情況?我試圖先從數據庫中刪除用戶,然後再次保留新用戶。但是,由於用戶未從數據庫中刪除,用戶名不唯一,因此生成了EJB異常。
非常感謝您的幫助
你有沒有tryed em.flush()? – kiki 2012-01-08 15:54:38
它與合併作爲托馬斯建議......非常感謝 – ict1991 2012-01-08 16:01:54