Вопрос действительно запутанный.Вы имеете в виду, что когда вы делаете вызов findbyId(u.id)
, что old.role
возвращает значение, найденное в параметре u
, а не значение, найденное в базе данных?
Если это так, возможно, выможно попробовать что-то вроде этого:
JPA.em().detach(u);
User old = User.findById(u.id);
if (!u.role.equals(old.role)) {
...
}
Если вам действительно нужно внести изменения в пользователя u
, который был отсоединен, вам нужно будет сделать это:
// this will attach the user back to the hibernate session
User merged = JPA.em().merge(u);
// do something like updating the merged user
merged.property = someValue;
merged.save();