@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW, isolation = Isolation.REPEATABLE_READ)
public void updateMyAccount(final PFUserDO user)
{
accessChecker.checkRestrictedOrDemoUser();
final PFUserDO contextUser = ThreadLocalUserContext.getUser();
Validate.isTrue(user.getId().equals(contextUser.getId()) == true);
final PFUserDO dbUser = getHibernateTemplate().load(clazz, user.getId(), LockMode.PESSIMISTIC_WRITE);
final String[] ignoreFields = { "deleted", "password", "lastLogin", "loginFailures", "username", "stayLoggedInKey",
"authenticationToken", "rights" };
final ModificationStatus result = HistoryBaseDaoAdapter.wrappHistoryUpdate(dbUser,
() -> copyValues(user, dbUser, ignoreFields));
if (result != ModificationStatus.NONE) {
dbUser.setLastUpdate();
log.info("Object updated: " + dbUser.toString());
copyValues(user, contextUser, ignoreFields);
} else {
log.info("No modifications detected (no update needed): " + dbUser.toString());
}
getUserGroupCache().updateUser(user);
}