У меня есть сущность пользователя. Когда я сохраняю пользовательский документ в коллекции, я хеширую пароль с помощью @PrePersist, но Morphia также вызывает @PrePersist, когда я пытаюсь обновить документ без пароля.
@PrePersist
void prePersist() {
if (password != null) {
System.out.println(password);
PasswordService service = new DefaultPasswordService();
password = service.encryptPassword(password);
}
}
Это моя операция обновления.
@Override
public void updateWithoutPassword(T user) {
Query <T> query = userDAO.createQuery();
query.and(
query.criteria("_id").equal(user.getId())
);
UpdateOperations <T> updateOperations = userDAO.createUpdateOperations();
updateOperations.set("username", user.getUsername());
updateOperations.set("name", user.getName());
updateOperations.set("surname", user.getSurname());
updateOperations.set("department", user.getDepartment());
updateOperations.set("roles", user.getRoles());
userDAO.update(query, updateOperations);
}
Когда я вызываю updateWithoutPassword(), @PrePersist работает, и значение пароля является старым значением пароля и пытается снова хэшировать старый пароль. Что я делаю неправильно?